【问题标题】:How can we perform early stopping with train_on_batch?我们如何使用 train_on_batch 执行提前停止?
【发布时间】:2020-01-25 22:04:46
【问题描述】:

我在循环中手动运行时期,以及在循环中进一步嵌套的小批量。在每个 mini-batch 中,我需要调用 train_on_batch,以启用自定义模型的训练。

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

【问题讨论】:

  • 跟踪某个指标,然后在达到某个阈值时break

标签: python tensorflow keras


【解决方案1】:

在实践中,“提前停止”主要通过以下方式完成:(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

【讨论】:

    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2015-08-02
    相关资源
    最近更新 更多