Tensorflow 2.* 网络训练(三) keras.callbacks 回调函数

回调函数在TensorFlow 2.x的模型训练中扮演重要角色,能够监控性能、中断训练、调整学习率等。本文详细介绍了BaseLogger、CSVLogger、EarlyStopping、LearningRateScheduler、ModelCheckpoint、ReduceLROnPlateau等内置回调,并提供自定义Callback的示例,同时提及了TensorBoard的使用和如何在model.fit中应用回调。

回调函数(callback)是在调用fit 时传入模型的一个对象(即实现特定方法的类实例),它在训练过程中的不同时间点都会被模型调用。它可以访问关于模型状态与性能的所有可用数据,还可以采取行动:中断训练、保存模型、加载一组不同的权重或改变模型的状态。
keras中也提供了丰富的回调API,我们可以根据需求自定义相关的对象。

BaseLogger

顾名思义,基础日志,用于记录每个epoch的平均metrics.
该回调函数在每个模型中都会被自动调用

CSVLogger

记录每个epoch的结果到csv文件中

csvlogger = tf.keras.callbacks.CSVLogger(filename, separator=',', append=False)
参数 注解
fiename 保存的csv文件名,如run/log.csv
separator 字符串,csv分隔符
append 默认为False,为True时csv文件如果存在则继续写入,为False时总是覆盖csv文件

结果如下:包括训练集和验证集合的loss,以及学习率
在这里插入图片描述

EarlyStopping

当metric停止提升时,停止训练

earlystoppoing = tf.keras.callbacks.EarlyStopping(
				    monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto',
				    baseline=None, restore_best_weights=False)
参数 注解
monitor 监视标准
min_delta 监控标准在训练过程中允许的最小改变量,即小于此值后便认为性能没有提升
patience 相比上一个epoch训练监控标准没有提升(小于min_delta),则经过patience个epoch后停止训练(还是很形象的patience 耐心)
verbose 信息展示模式
mode ‘auto’,‘min’,‘max’之一,与monitor对应。比如loss对应min,acc对应max;auto根据monitor的名称自动定义
baseline 监控标准的基准线,当训练过程相对基准没有提升则停止训练
restore_best_weights 布尔型,Ture,重载最好的监控量的epoch对应的weight,False,最后一步的权重

LearningRateScheduler

定义学习率日程表,即自定义不同epcoh的学习率

# 前十组为0.001 后面指数减少
def scheduler(epoch):
  if epoch < 10:
    return 0.001
  else:
    return 0.001 * tf.math.exp(0.1 * (10 - epoch))

learningreatescheduler = tf.keras.callbacks.LearningRateScheduler(scheduler)

ModelCheckpoint

按照定义以一定频率存储模型或者权值文件

modelcheckpoint=tf.keras.callbacks.ModelCheckpoint(
		    filepath, monitor='val_loss', verbose=0, save_best_only=False
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值