回调函数Callbacks
回调函数是一组在训练的特定阶段被调用的函数集,你可以使用回调函数来观察训练过程中网络内部的状态和统计信息。通过传递回调函数列表到模型的.fit()
中,即可在给定的训练阶段调用该函数集中的函数。
【Tips】虽然我们称之为回调“函数”,但事实上Keras的回调函数是一个类,回调函数只是习惯性称呼
EarlyStopping
keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbose=0, mode='auto')
当监测值不再改善时,该回调函数将中止训练
参数
monitor:需要监视的量
patience:当early stop被激活(如发现loss相比上一个epoch训练没有下降),则经过
patience
个epoch后停止训练。verbose:信息展示模式
mode:‘auto’,‘min’,‘max’之一,在
min
模式下,如果检测值停止下降则中止训练。在max
模式下,当检测值不再上升则停止训练。
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数
#定义回调函数,以便使用早停技术并保持最佳模型
callbacks = [
EarlyStopping(monitor='val_acc',patience=20,verbose=2),
ModelCheckpoint('checkpoint/multi_layer_best_model.h5',monitor='val_acc',save_best_only=True,verbose=0),
]
model.fit(X_train.values,
y_train,
batch_size=batch_size,
epochs=n_epochs,
validation_split=0.2,
verbose=2,
callbacks=callbacks
)
reference:
https://keras-cn.readthedocs.io/en/latest/other/callbacks/