这个问题似乎很基本,但是我在Google上找不到任何有用的东西。
我手动在循环中运行时期,并在循环中进一步嵌套迷你批处理。 在每个小批量生产中,我需要调用train_on_batch来启用自定义模型的训练。
是否有手动方法来恢复提前停止的功能,即打破循环?
答案 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