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 三个可能,如果知道是要上升或者下降,建议设置一下。

 

posted @ 2021-08-17 17:26  大大的海棠湾  阅读(702)  评论(0)    收藏  举报