提问者:小点点

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


我正在使用基于val_accpatience=0earlystopping使用Keras来训练一个神经网络。 earlystoppingval_acc减少时立即停止训练。

然而,我得到的最后一个模型并不是最好的模型,即具有最高val_acc的模型。 但是我更愿意使用与之后的纪元相对应的模型,即与val_acc相对应的模型,该模型只比最好的模型低一点,并且导致了早期停止!

我怎么才能得到最好的呢?

我尝试使用回调的save the best model:

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

但我得到了同样的结果。


共2个答案

匿名用户

如果您想保存最高精度,那么您应该设置检查点monitor='val_acc',它将自动保存为最高精度。 最低损耗不一定对应最高精度。 您还可以设置verbose=1来查看保存的是哪个模型以及为什么。

匿名用户

在Keras 2.2.3中,为earlystopping回调引入了一个名为restore_best_weights的新参数,如果将该参数设置为true(默认为false),它将从具有最佳监控量的纪元恢复权重:

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