Python Keras在最佳模型达到训练状态后保存该模型
我使用Keras的回调模型检查点来保存最佳模型的权重 然而,有时最佳验证精度(即我监控的指标)在训练开始时很高,因为我的模型中有相当多的噪声。但我不想保存这个模型,因为它还没有时间学习 我想从某个时代获得最佳模型,理想情况下,我会通过检查训练精度>95%来获得,因此我知道在学习了训练数据集中的特征后,我得到了最佳模型Python Keras在最佳模型达到训练状态后保存该模型,python,tensorflow,keras,Python,Tensorflow,Keras,我使用Keras的回调模型检查点来保存最佳模型的权重 然而,有时最佳验证精度(即我监控的指标)在训练开始时很高,因为我的模型中有相当多的噪声。但我不想保存这个模型,因为它还没有时间学习 我想从某个时代获得最佳模型,理想情况下,我会通过检查训练精度>95%来获得,因此我知道在学习了训练数据集中的特征后,我得到了最佳模型 有没有办法通过Keras的回调或其他方式实现这一点?您可以编写一个自定义回调函数,该函数在每个历元后都会触发 将触发自定义回调函数中的_epoch_end函数,并将“logs”作为
有没有办法通过Keras的回调或其他方式实现这一点?您可以编写一个自定义回调函数,该函数在每个历元后都会触发 将触发自定义回调函数中的_epoch_end函数,并将“logs”作为其参数之一 根据文件,参数为 历元:整数,历元的索引 日志:dict,此训练时期的度量结果,以及 如果执行了验证,则为验证期。验证结果密钥 前缀为
val\
因此,您可以通过自定义回调类中on_epoch_end方法内的日志[“accurity”]访问精度
要保存模型权重,请参阅ModelCheckpoint回调方法中的这一行,它是一个简单的函数调用
所以基本上你的代码看起来是这样的
class MyCallback(Callback):
def __init__():
#TODO
#INITIALIZE ALL U NEED, lets say the accuracy threshold, filepath to save the model etc..
def on_epoch_end(self,epoch,logs=None):
if(logs["accuracy"]>0.95):
#TODO SAVE MODEL
self.model.save_weights(filepath)
您可以编写自定义回调。谢谢,我正在考虑这个问题。你知道我如何从这个自定义回调中访问列车精度吗?谢谢。这看起来不错,但我还需要添加逻辑以仅保存最佳模型,因此我考虑覆盖现有的ModelCheckpoint回调以添加我对列车精度的一个条件,这有意义吗?是的。您可以查看现有代码的实现,并在回调中复制和编辑它。是的!我就是这么做的。再次感谢,我会把你的答案标记为正确