我正在使用Keras。我正在训练我的神经网络并使用Early Stoping。我的耐心是10,验证损失最小的时期是15。我的网络运行到25个时期,然后停止,但是如果我理解正确,我的模型是25个时期的模型,而不是15个。
是否有一种简单的方法可以还原到15个时期模型?还是需要重新实例化该模型并运行15个时代?
答案 0 :(得分:3)
是的,在restore_best_weights
回调中有一个EarlyStopping
参数,将其设置为True,Keras将跟踪产生最佳损失的权重:
callback = EarlyStopping(..., restore_best_weights=True)
查看此回调here的所有参数。
答案 1 :(得分:0)
是的,您将获得与纪元停止时对应的模型(权重)。常用的策略是在验证损失/ acc改善时保存模型。
答案 2 :(得分:0)
“早期停止”不适用于您所想的方式,它应该返回最低损失或最高准确度的模型,如果模型的准确性或损失没有改善,它会起作用,大约x个历元(在您的情况下为10个周期,耐心参数),它将停止。 您应该改用回调模型检查点函数,例如
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=True, save_weights_only=False, mode='auto', period=1)
这将保存或检查在训练历史记录中遇到的最佳模型。