代码之家  ›  专栏  ›  技术社区  ›  Mauro Gentile

在Keras中使用earlystoping回调时,如何获得最佳模型?

  •  4
  • Mauro Gentile  · 技术社区  · 6 年前

    我正在用Keras训练一个神经网络 EarlyStopping 基于 val_acc patience=0 . 提前停止 尽快停止训练 val_acc 减少。

    然而,我得到的最终模型并不是最好的模型,也就是最高的模型 val_acc 但是我有一个对应于后一个时代的模型,也就是对应于 val_acc 只是比最好的稍微低一点,这导致了提前停车!

    我怎么才能买到最好的?

    我尝试使用“保存最佳模型”并使用回拨:

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

    但我得到了同样的结果。

    2 回复  |  直到 6 年前
        1
  •  14
  •   today    4 年前

    在里面 Keras 2.2.3 ,一个新的论点叫做 restore_best_weights 已经介绍了好几年了 EarlyStopping 如果设置为 True (默认为 False ),它将恢复具有最佳监控量的历元权重:

    恢复最佳权重: 是否使用监控量的最佳值从历元恢复模型权重。如果 错误的 这个 使用在训练的最后一步获得的模型权重。

        2
  •  2
  •   nuric    6 年前

    如果你想保存最高精度,那么你应该设置检查点 monitor='val_acc' 它将自动保存在最新版本中。最低的损失不一定对应最高的准确度。你也可以设置 verbose=1 查看要保存的模型及其原因。