Keras函数——keras.callbacks.ModelCheckpoint()及模型的训练
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)
在每个epoch后保存模型到filepath。
参数:
- filepath: 保存模型的路径。
- monitor: 被监测的数据。val_acc或val_loss。
- verbose: 详细信息模式,0 或者1。0为不打印输出信息,1为打印。
- save_best_only: 如果save_best_only=True,将只保存在验证集上性能最好的模型mode: {auto, min, max} 的其中之一。 如果save_best_only=True,那么是否覆盖保存文件的决定就取决于被监测数据的最大或者最小值。 对于val_acc,模式就会是max;而对于 val_loss,模式就需要是min。在auto模式中,方式会自动从被监测的数据的名字中判断出来。
- save_weights_only: 如果 True,那么只有模型的权重会被保存 (model.save_weights(filepath)), 否则的话,整个模型会被保存 (model.save(filepath))。
- period: 每个检查点之间的间隔(训练轮数)。
训练过程:
1、从keras.callbacks导入ModelCheckpoint类
from keras.callbacks import ModelCheckpoint
2、在训练阶段的model.compile之后加入下列代码实现每一次epoch(period=1)保存最好的参数
checkpoint = keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', save_weights_only=True,verbose=1,save_best_only=True, period=1)
3、在训练阶段的model.fit之前加载先前保存的参数
if os.path.exists(filepath): model.load_weights(filepath) # 若成功加载前面保存的参数,输出下列信息 print("checkpoint_loaded")
4、在model.fit添加callbacks=[checkpoint]实现回调
model.fit_generator(data_generator_wrap(lines[:num_train], batch_size, input_shape, anchors, num_classes), steps_per_epoch=max(1, num_train//batch_size), validation_data=data_generator_wrap(lines[num_train:], batch_size, input_shape, anchors, num_classes), validation_steps=max(1, num_val//batch_size), epochs=, initial_epoch=0, callbacks=[checkpoint])