培训完成后,Keras将保存最佳模型

时间:2019-12-13 08:50:54

标签: python tensorflow keras

我正在使用Keras的回调ModelCheckpoint来保存最佳模型的权重。

但是,有时最佳的验证准确性(这是我监控的指标)在训练开始时就很高,因为我的模型中存在很多噪声。但是我不希望保存该模型,因为它还没有时间学习。

我想从某个时期获得最佳模型,理想情况下,我会通过检查训练准确性> 95%来获得,因此我知道在学习了功能之后我将获得最佳模型在训练数据集中。

是否可以通过Keras的回调实现此目的?

1 个答案:

答案 0 :(得分:1)

您可以编写一个自定义的回调函数,该函数将在每个时期后触发。

您的自定义回调函数中的函数on_epoch_end被触发,其中“ logs”为其参数之一。

根据文档,参数为

  

epoch:整数,纪元的索引。

     

logs:此培训纪元以及   验证时期(如果执行验证)。验证结果键   前缀为val_

因此您可以通过自定义回调类中on_epoch_end方法内的logs [“ accuracy”]来获取准确性。

要保存模型权重,请参考ModelCheckpoint回调方法中的此行,这是一个简单的函数调用。

https://github.com/keras-team/keras/blob/master/keras/callbacks/callbacks.py#L727

因此,基本上您的代码将如下所示

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)