【问题标题】:Early Stopping, Model has gone through how many epochs?Early Stopping,Model 经历了多少个 epoch?
【发布时间】:2019-07-05 03:31:16
【问题描述】:
我正在使用 Keras。我正在训练我的神经网络并使用 Early Stopping。我的耐心是 10,验证损失最低的时期是 15。我的网络运行到 25 个时期并停止,但是如果我理解正确,我的模型是具有 25 个时期而不是 15 的模型
有没有一种简单的方法可以恢复到 15 个 epoch 模型,还是我需要重新实例化模型并运行 15 个 epoch?
【问题讨论】:
标签:
python-3.x
tensorflow
keras
neural-network
【解决方案1】:
是的,有一个,EarlyStopping 回调中的 restore_best_weights 参数,将其设置为 True,Keras 将跟踪产生最佳损失的权重:
callback = EarlyStopping(..., restore_best_weights=True)
查看此回调here的所有参数。
【解决方案2】:
是的,当它停止时,你会得到与 epoch 对应的模型(权重)。一种常用的策略是在验证损失/acc 提高时保存模型。
【讨论】:
-
其实可以通过EarlyStopping回调恢复最佳模型。看到这个answer。
【解决方案3】:
提前停止不会按照您的想法工作,它应该返回最低损失或最高准确度的模型,如果模型准确度或损失没有改善,它会工作大约 x 个时期(在您的情况下为 10 个,耐心参数)然后它将停止。
您应该使用回调模型检查点函数,例如
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=True, save_weights_only=False, mode='auto', period=1)
https://keras.io/callbacks/
这将保存或检查训练历史期间遇到的最佳模型。
【讨论】:
-
其实可以使用EarlyStopping回调恢复最佳模型。看到这个answer。
-