Keras通过“ train_on_batch”提前停止

时间:2019-09-25 16:43:12

标签: python keras

这个问题似乎很基本,但是我在Google上找不到任何有用的东西。

我手动在循环中运行时期,并在循环中进一步嵌套迷你批处理。 在每个小批量生产中,我需要调用train_on_batch来启用自定义模型的训练。

是否有手动方法来恢复提前停止的功能,即打破循环?

1 个答案:

答案 0 :(得分:3)

实际上,“提前停止”主要是通过以下方式完成的:(1)训练X个时期,(2)每当模型达到新的最佳性能时,保存,(3)选择最好的模型。 “最佳性能”定义为达到最高(例如准确性)或最低(例如损失)验证指标-以下示例脚本:

best_val_loss = 999 # arbitrary init - should be high if 'best' is low, and vice versa
num_epochs = 5
epoch = 0

while epoch < num_epochs:
    model.train_on_batch(x_train, y_train)  # get x, y somewhere in the loop
    val_loss = model.evaluate(x_val, y_val)

    if val_loss < best_val_loss:
        model.save(best_model_path) # OR model.save_weights()
        print("Best model w/ val loss {} saved to {}".format(val_loss, best_model_path))
    # ...
    epoch += 1

请参见saving Keras models。如果您希望直接早停,则定义一些指标(即条件)即可结束火车循环。例如,

while True:
    loss = model.train_on_batch(...)
    if loss < .02:
        break