keras中Callbacks函数
Callback keras.callbacks.Callback()
在每个 training epoch batch结束时,如果我们想执行某些任务,如模型缓冲 输出日志 计算当前batch的auc等等,keras的callback就派上用场了。
我们可以通过keras.callbacks.Callback来定义自己的callback,只需要重写其中的6个方法即可。
on_train_begin
on_train_end
on_epoch_begin
on_epoch_end
on_batch_begin
on_batch_end
可以在这6个方法中定义自己想要的属性,通过self.model可以访问模型本身,self.params可以访问训练参数。
***********************原文 https://keras-cn.readthedocs.io/en/latest/other/callbacks/ **************************
回调函数是一组在训练的特定阶段被调用的函数集合,可以使用回调函数来观察训练过程中网络内部的状态和统计信息,通过传递回调函数列表到模型的.fit中。既可以在给定的训练阶段调用该函数集中的函数。
模型的.fit()中有下列参数会被记录到logs中:
在每个epoch的结尾处(on_epoch_end),logs将包含训练的正确和误差 acc和loss。如果指定了验证集,还会包含验证机正确率和误差 val_loss val_acc,val_acc还额外需要在.compileh中启用 metrics=【‘accuracy’】
在每个batch的开始处 on_batch_begin logs包含size,即当前batch的样本数
在每个batch的结尾处 on_batch_end logs包含loss,若启用accuracy 还包含acc
History keras.callbacks.History()
该回调函数在keras模型上会被自动调用,History对象即为fit方法的返回值。
EarlyStopping keras.callbacks.EarlyStopping()
EarlyStopping(monitor,patience,verbose,mode)
patience是指loss有多少个可以没有下降
callbacks可以指定在每个epoch开始和结束的时候进行哪种特定操作,callbacks中有一些设置好的接口,可以直接使用,如acc val_acc loss val_loss等参数
earlystopping 则是用于提前停止训练的callbacks,具体地,可以达到当训练集上的loss不再减小(即减小的程度小于某个阈值)的时候停止继续训练。
为什么要用earlystopping
继续训练导致准确率下降的原因为1 过拟合 2 学习率过大导致不收敛 3 使用正则项的时候 loss的减小可能不是因为准确率增加导致的,而是因为权重大小的减低。
使用earlystopping可以加快学习的速度,提高调参效率。
earlystopping里面的主要参数
monitor 正常情况下如果有验证集,就用val_acc val_loss 如果没有验证集,就使用 acc loss指标。
min_delte 增加或者减小的阈值 这个值的大小取决于monitor,反映了容忍程度。
patience 能够容忍多少个epoch内没有improvement,这个设置其实是在抖动和真正的准确率下降之间做tradeoff
mode 就auto max min 三个可能,如果知道是要上升或者下降,建议设置一下。

浙公网安备 33010602011771号