https://cloud.tencent.com/developer/article/1010815
8.更科学地模型训练与模型保存
filepath = 'model-ep{epoch:03d}-loss{loss:.3f}-val_loss{val_loss:.3f}.h5' checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min') # fit model model.fit(x, y, epochs=20, verbose=2, callbacks=[checkpoint], validation_data=(x, y))
save_best_only打开之后,会如下:
ETA: 3s - loss: 0.5820Epoch 00017: val_loss did not improve
如果val_loss 提高了就会保存,没有提高就不会保存。
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
可以是格式化的字符串,里面的占位符将会被epoch
值和传入on_epoch_end
的logs
关键字所填入
例如,filepath
若为weights.{epoch:02d-{val_loss:.2f}}.hdf5
,则会生成对应epoch和验证集loss的多个文件。
参数
-
filename:字符串,保存模型的路径
-
monitor:需要监视的值
-
verbose:信息展示模式,0或1
-
save_best_only:当设置为
True
时,将只保存在验证集上性能最好的模型 -
mode:‘auto’,‘min’,‘max’之一,在
save_best_only=True
时决定性能最佳模型的评判准则,例如,当监测值为val_acc
时,模式应为max
,当检测值为val_loss
时,模式应为min
。在auto
模式下,评价准则由被监测值的名字自动推断。 -
save_weights_only:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)
-
period:CheckPoint之间的间隔的epoch数。
9.如何在keras中使用tensorboard
1 RUN = RUN + 1 if 'RUN' in locals() else 1 # locals() 函数会以字典类型返回当前位置的全部局部变量。 2 3 LOG_DIR = model_save_path + '/training_logs/run{}'.format(RUN) 4 LOG_FILE_PATH = LOG_DIR + '/checkpoint-{epoch:02d}-{val_loss:.4f}.hdf5' # 模型Log文件以及.h5模型文件存放地址 5 6 tensorboard = TensorBoard(log_dir=LOG_DIR, write_images=True) 7 checkpoint = ModelCheckpoint(filepath=LOG_FILE_PATH, monitor='val_loss', verbose=1, save_best_only=True) 8 early_stopping = EarlyStopping(monitor='val_loss', patience=5, verbose=1) 9 10 history = model.fit_generator(generator=gen.generate(True), steps_per_epoch=int(gen.train_batches / 4), 11 validation_data=gen.generate(False), validation_steps=int(gen.val_batches / 4), 12 epochs=EPOCHS, verbose=1, callbacks=[tensorboard, checkpoint, early_stopping])
都是在回调函数中起作用:
-
EarlyStopping patience:当early
(1)stop被激活(如发现loss相比上一个epoch训练没有下降),则经过patience个epoch后停止训练。
(2)mode:‘auto’,‘min’,‘max’之一,在min模式下,如果检测值停止下降则中止训练。在max模式下,当检测值不再上升则停止训练。 -
模型检查点ModelCheckpoint
(1)save_best_only:当设置为True时,将只保存在验证集上性能最好的模型
(2) mode:‘auto’,‘min’,‘max’之一,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。
(3)save_weights_only:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)
(4)period:CheckPoint之间的间隔的epoch数 - 可视化tensorboard write_images: 是否将模型权重以图片的形式可视化
其他内容可参考keras中文文档