Keras中使用ModelCheckpoint对训练完成的模型进行保存及载入

1,898 阅读1分钟

我们训练完模型之后,一般会需要保存模型或者只保存权重文件。可以利用keras中的回调函数ModelCheckpoint进行保存。

定义:

keras.callbacks.ModelCheckpoint(
filepath,
monitor='val_loss',
verbose=0,
save_best_only=True,
save_weights_only=False,
mode='auto',
period=1
)

参数含义:

1. filename:模型保存在本地的路径
2. monitor:需要监视的值,val_accuracy、val_loss或者accuracy
3. verbose:信息展示模式
4. save_best_only:当设置为True时,表示当模型这次epoch的训练评判结果(monitor的监测值)比上一次保存训练时的结果有提升时才进行保存。
5. mode:‘auto’,‘min’,‘max’之一,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。
6. save_weights_only:若设置为True,占用内存小(只保存模型权重),但下次想调用的话,需要搭建和训练时一样的网络。若设置为False,占用内存大(包括了模型结构和配置信息),下次调用可以直接载入,不需要再次搭建神经网络结构。
7. period:填写 int 值,如果填写 period=3,指模型每训练3个epoch,进行保存一次。

save_weights_only = True
model=load_model(filepath)
save_weights_only = False
model = tf.keras.Sequential([ 
   # 设置神经元个数,lstm层数问题    
LSTM(100, return_sequences=True),    
Dropout(0.2),    
LSTM(80),    
Dropout(0.2),    
# 这一层神经元的个数表示Dense参数中unit个数    
Dense(4)])
model.compile(optimizer=tf.keras.optimizers.Adam(0.0006), loss='mean_squared_error')
model.load_weights(checkpoint_save_path)