我正在使用Keras的回调ModelCheckpoint来保存最佳模型的权重。
但是,有时最佳的验证准确性(这是我监控的指标)在训练开始时就很高,因为我的模型中存在很多噪声。但是我不希望保存该模型,因为它还没有时间学习。
我想从某个时期获得最佳模型,理想情况下,我会通过检查训练准确性> 95%来获得,因此我知道在学习了功能之后我将获得最佳模型在训练数据集中。
是否可以通过Keras的回调实现此目的?
答案 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)