【问题标题】:How to get the best model when using EarlyStopping callback in Keras?在 Keras 中使用 EarlyStopping 回调时如何获得最佳模型?
【发布时间】:2018-10-30 03:27:15
【问题描述】:

我正在使用基于val_accpatience=0EarlyStopping 使用Keras 训练神经网络。只要val_acc 减少,EarlyStopping 就会停止训练。

但是我得到的最终模型并不是最好的模型,即val_acc 最高的模型。但是我宁愿拥有对应于之后时代的模型,即对应于val_acc的模型比最好的模型低一点,导致提前停止!

如何获得最好的?

我尝试使用回调使用保存最佳模型:

ModelCheckpoint(filepath='best_model.h5', monitor='val_loss', save_best_only=True)]

但我得到了相同的结果。

【问题讨论】:

    标签: python machine-learning neural-network keras


    【解决方案1】:

    如果你想保存最高精度,那么你应该设置检查点monitor='val_acc'它会自动保存在最高。最低损失不一定对应于最高准确度。您还可以设置verbose=1 来查看正在保存的模型以及原因。

    【讨论】:

    • 我确实是这样做的。我监控 val_acc。我现在将详细设置为 1 以了解会发生什么
    • 这个答案是正确的。即使您将patiente 设置为 0,您的训练仍将持续 1 个 epoch。因为从逻辑上讲,您还需要一个 epoch 来确定模型不再改进。不过ModelCheckpoint 为您保存了最好的模型。你只需要加载它:best_model = load_model(filepath='best_model.h5')
    【解决方案2】:

    Keras 2.2.3 中,为EarlyStopping 回调引入了一个名为restore_best_weights 的新参数,如果设置为True(默认为False),它将从具有最佳监控的时期恢复权重数量:

    restore_best_weights:是否从监测量的最佳值的epoch恢复模型权重。如果False,则 使用在训练的最后一步获得的模型权重。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 2021-10-22
      • 2018-06-25
      相关资源
      最近更新 更多