美文网首页
yolov3代码涉及到的Keras.callbacks类

yolov3代码涉及到的Keras.callbacks类

作者: dc_3 | 来源:发表于2019-08-17 10:12 被阅读0次

官网解释

Keras.callbacks

回调函数是一组在训练的特定阶段被调用的函数集,你可以使用回调函数来观察训练过程中网络内部的状态和统计信息。通过传递回调函数列表到模型的.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

相关文章

网友评论

      本文标题:yolov3代码涉及到的Keras.callbacks类

      本文链接:https://www.haomeiwen.com/subject/jgkhsctx.html