官网解释
回调函数是一组在训练的特定阶段被调用的函数集,你可以使用回调函数来观察训练过程中网络内部的状态和统计信息。通过传递回调函数列表到模型的.fit()中,即可在给定的训练阶段调用该函数集中的函数。
ModelCheckpoint:
该回调函数将在每个epoch后保存模型到filepath
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss',
verbose=0, save_best_only=False,
save_weights_only=False, mode='auto', period=1)
- filepath:字符串,保存模型的路径和名称。
- monitor='val_loss':需要监视的值。默认是验证集损失。
- verbose=0:信息展示模式,0或1。
- save_best_only=False:当设置为True时,将只保存在验证集上性能最好的模型。
- save_weights_only=False:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)。
- mode:‘auto’,‘min’,‘max’之一,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。
- period=1:CheckPoint之间的间隔的epoch数。(epoch指整个数据集(所有batch全部更新完1次)被训练的轮次)。
ReduceLROnPlateau:
当学习停滞时,减少2倍或10倍的学习率常常能获得较好的效果。该回调函数检测指标的情况,如果在patience个epoch中看不到模型性能提升,则减少学习率。学习率对模型训练的影响解释
keras.callbacks.ReduceLROnPlateau(monitor='val_loss',
factor=0.1, patience=10, verbose=0, mode='auto',
epsilon=0.0001, cooldown=0, min_lr=0)
- monitor:被监测的量。默认是val_loss
- factor:每次减少学习率(lr)的因子,学习率将以lr = lr*factor的形式被减少
- patience:当patience个epoch过去而模型性能不提升时,学习率减少的动作会被触发
- mode:‘auto’,‘min’,‘max’之一,如果观测值是val_loss,那么当它不再减少(对应min)时改变lr
- epsilon:阈值,用来确定是否进入检测值的“平原区”。
- cooldown:学习率减少后,会经过cooldown个epoch才重新进行正常操作
- min_lr:学习率的下限
EarlyStopping:
当监测值monitor不再改善时,该回调函数将中止训练
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模式下,当检测值不再上升则停止训练。
yolov3代码->train.py涉及到的:
ModelCheckpoint:
checkpoint = ModelCheckpoint(log_dir + 'ep{epoch:03d}-
loss{loss:.3f}-val_loss{val_loss:.3f}.h5',
monitor='val_loss', save_weights_only=True,
save_best_only=True, period=3)
参数解释:
- filepath=log_dir + 'ep{epoch:03d}-loss{loss:.3f}-val_loss{val_loss:.3f}.h5'。保存的权值名字。
- monitor='val_loss', 检测val_loss的值。
- save_weights_only=True, 只保留模型权值
- save_best_only=True, 只保留性能最好的模型
- period=3。每3个epoch进行一次CheckPoint。
ReduceLROnPlateau:
reduce_lr = ReduceLROnPlateau(monitor='val_loss',
factor=0.1, patience=3, verbose=1)
参数解释:
- monitor='val_loss', 监测val_loss。如果在patience个epoch中val_loss没有下降,那么改变lr。
- factor=0.1, lr=lr*0.1
- patience=3, 持续三个epoch。
- verbose=1。
EarlyStopping:
early_stopping = EarlyStopping(monitor='val_loss',
min_delta=0, patience=10, verbose=1)
参数解释:
- monitor='val_loss', 监测值
- min_delta=0,
- patience=10, 如发现loss相比上一个epoch训练没有下降,则经过10个epoch后停止训练。说明模型存在过拟合问题。
- verbose=1