我正在使用基于EarlyStopping
和val_acc
的{{1}}与Keras一起训练神经网络。 patience=0
一旦EarlyStopping
减少,val_acc
就会停止培训。
然而,我获得的最终模型不是最佳模型,即具有最高val_acc
的模型。但是我宁愿让模型对应于之后的时期,即对应于val_acc
的那个只比最好的一个低一点并导致早期停止!
我如何获得最好的一个?
我尝试使用回调来保存最佳模型:
ModelCheckpoint(filepath='best_model.h5', monitor='val_loss', save_best_only=True)]
但我得到的结果相同。
答案 0 :(得分:6)
在Keras 2.2.3中,为EarlyStopping
回调引入了一个名为restore_best_weights
的新参数,如果将其设置为True
(默认值为False
),它将从时期以最佳监视量恢复权重:
restore_best_weights :是否从纪元恢复具有最佳监视数量值的模型权重。如果
False
,则 使用训练的最后一步获得的模型权重。
答案 1 :(得分:2)
如果您想保存最高的准确度,那么您应该设置检查点monitor='val_acc'
它将自动保存在最高位置。最低损失可能不一定对应于最高精度。您还可以设置verbose=1
以查看正在保存的模型以及原因。