【发布时间】:2020-01-25 22:04:46
【问题描述】:
我在循环中手动运行时期,以及在循环中进一步嵌套的小批量。在每个 mini-batch 中,我需要调用 train_on_batch,以启用自定义模型的训练。
是否有手动方法来恢复提前停止的功能,即打破循环?
【问题讨论】:
-
跟踪某个指标,然后在达到某个阈值时
break?
标签: python tensorflow keras
我在循环中手动运行时期,以及在循环中进一步嵌套的小批量。在每个 mini-batch 中,我需要调用 train_on_batch,以启用自定义模型的训练。
是否有手动方法来恢复提前停止的功能,即打破循环?
【问题讨论】:
break?
标签: python tensorflow keras
在实践中,“提前停止”主要通过以下方式完成:(1) 训练 X 个 epoch,(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
【讨论】: