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

时间:2018-05-20 07:03:54

标签: python machine-learning neural-network keras

我正在使用基于EarlyStoppingval_acc的{​​{1}}与Keras一起训练神经网络。 patience=0一旦EarlyStopping减少,val_acc就会停止培训。

然而,我获得的最终模型不是最佳模型,即具有最高val_acc的模型。但是我宁愿让模型对应于之后的时期,即对应于val_acc的那个只比最好的一个低一点并导致早期停止!

我如何获得最好的一个?

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

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

但我得到的结果相同。

2 个答案:

答案 0 :(得分:6)

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

  

restore_best_weights :是否从纪元恢复具有最佳监视数量值的模型权重。如果False,则   使用训练的最后一步获得的模型权重。

答案 1 :(得分:2)

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