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

Mau*_*ile 2 python machine-learning neural-network keras

我正在训练一个神经网络与Keras使用EarlyStopping基于val_accpatience=0.EarlyStopping一旦val_acc减少就停止训练.

然而,我获得的最终模型不是最好的模型,即最高模型val_acc.但我宁愿将模型对应于之后的时代,即对应于val_acc比最佳时期稍低一点的模型,并且导致早期停止!

我如何获得最好的一个?

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

ModelCheckpoint(filepath='best_model.h5', monitor='val_loss', save_best_only=True)]
Run Code Online (Sandbox Code Playgroud)

但我得到了相同的结果.

tod*_*day 9

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

restore_best_weights:是否使用受监控数量的最佳值从时期恢复模型权重.如果False,使用在训练的最后一步获得的模型权重.


nur*_*ric 1

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