Keras学习笔记9——keras.callbacks

Keras各种Callbacks介绍 1 前言 在tensorflow.keras中,callbacks能在fit、evaluate和predict过程中加入伴随着模型的生命周期运行,目前tensorflow.keras已经构建了许多种callbacks供用户使用,用于防止过拟合、可视化训练过程、纠错、保存模型checkpoints和生成TensorBoard等。通过这篇文章,我们来了解一下如何使用tensorflow.keras里的各种callbacks,以及如何自定义callbacks。 2 使用callbacks 使用callbac 阅读详情

来源

回调函数使用

回调函数是一个函数的合集,会在训练的阶段中所使用。你可以使用回调函数来查看训练模型的内在状态和统计。你可以传递一个列表的回调函数(作为 callbacks 关键字参数)到 Sequential 或 Model 类型的 .fit() 方法。在训练时,相应的回调函数的方法就会被在各自的阶段被调用。

Callback

用来组建新的回调函数的抽象基类。

keras.callbacks.Callback()

属性

  • params: 字典。训练参数, (例如,verbosity, batch size, number of epochs…)。
  • model: keras.models.Model 的实例。 指代被训练模型。

被回调函数作为参数的 logs 字典,它会含有于当前批量或训练轮相关数据的键。
目前,Sequential 模型类的 .fit() 方法会在传入到回调函数的 logs 里面包含以下的数据:

  • on_epoch_end: 包括 acc 和 loss 的日志, 也可以选择性的包括 val_loss(如果在 fit 中启用验证),和 val_acc(如果启用验证和监测精确值)。
  • on_batch_begin: 包括 size 的日志,在当前批量内的样本数量。
  • on_batch_end: 包括 loss 的日志,也可以选择性的包括 acc(如果启用监测精确值)。

BaseLogger

会积累训练轮平均评估的回调函数。

keras.callbacks.BaseLogger(stateful_metrics=None)

这个回调函数被自动应用到每一个 Keras 模型上面。

参数
stateful_metrics: 可重复使用不应在一个 epoch 上平均的指标的字符串名称。 此列表中的度量标准将按原样记录在 on_epoch_end 中。 所有其他指标将在 on_epoch_end 中取平均值。

TerminateOnNaN

当遇到 NaN 损失会停止训练的回调函数。

keras.callbacks.TerminateOnNaN()

ProgbarLogger

会把评估以标准输出打印的回调函数。

keras.callbacks.ProgbarLogger(count_mode='samples', stateful_metrics=None)

参数

  • count_mode: “steps” 或者 “samples”。 进度条是否应该计数看见的样本或步骤(批量)。
  • stateful_metrics: 可重复使用不应在一个 epoch 上平均的指标的字符串名称。 此列表中的度量标准将按原样记录在 on_epoch_end 中。 所有其他指标将在 on_epoch_end 中取平均值。

History

把所有事件都记录到 History 对象的回调函数。

keras.callbacks.History()

这个回调函数被自动启用到每一个 Keras 模型。History 对象会被模型的 fit 方法返回。

ModelCheckpoint

在每个训练期之后保存模型。

keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)

filepath 可以包括命名格式选项,可以由 epoch 的值和 logs 的键(由 on_epoch_end 参数传递)来填充。
例如:如果 filepath 是 weights.{epoch:02d}-{val_loss:.2f}.hdf5, 那么模型被保存的的文件名就会有训练轮数和验证损失。

参数

  • filepath: 字符串,保存模型的路径。
  • monitor: 被监测的数据。
  • verbose: 详细信息模式,0 或者 1 。
  • save_best_only: 如果 save_best_only=True, 被监测数据的最佳模型就不会被覆盖。
  • mode: {auto, min, max} 的其中之一。 如果 save_best_only=True,那么是否覆盖保存文件的决定就取决于被监测数据的最大或者最小值。 对于 val_acc,模式就会是 max,而对于 val_loss,模式就需要是 min,等等。 在 auto 模式中,方向会自动从被监测的数据的名字中判断出来。
  • save_weights_only: 如果 True,那么只有模型的权重会被保存 (model.save_weights(filepath)), 否则的话,整个模型会被保存 (model.save(filepath))。
  • period: 每个检查点之间的间隔(训练轮数)。

EarlyStopping

当被监测的数量不再提升,则停止训练。

keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, 
patience=0, verbose=0, mode='auto', baseline=None, 
restore_best_weights=False)

参数

  • monitor: 被监测的数据。
  • min_delta: 在被监测的数据中被认为是提升的最小变化, 例如,小于 min_delta 的绝对变化会被认为没有提升。
  • patience: 被监测的数据(monitor value)没有进步的训练轮数epoch,在这之后训练就会被停止。
  • verbose: 详细信息模式。
  • mode: {auto, min, max} 其中之一。 在 min 模式中, 当被监测的数据停止下降,训练就会停止;在 max 模式中,当被监测的数据停止上升,训练就会停止;在 auto 模式中,方向会自动从被监测的数据的名字中判断出来。
  • baseline: 要监控的数量的基准值。 如果模型没有显示基准的改善,训练将停止。
  • restore_best_weights: 是否从具有监测数量的最佳值的时期恢复模型权重。 如果为 False,则使用在训练的最后一步获得的模型权重。

RemoteMonitor

将事件数据流到服务器的回调函数。

keras.callbacks.RemoteMonitor(root='http://localhost:9000', path='/publish/epoch/end/', field='data', headers=None, send_as_json=False)

需要 requests 库。 事件被默认发送到 root + ‘/publish/epoch/end/’。 采用 HTTP POST ,其中的 data 参数是以 JSON 编码的事件数据字典。 如果 send_as_json 设置为 True,请求的 content type 是 application/json。否则,将在表单中发送序列化的 JSON。

参数

  • root: 字符串;目标服务器的根地址。
  • path: 字符串;相对于 root 的路径,事件数据被送达的地址。
  • field: 字符串;JSON ,数据被保存的领域。
  • headers: 字典;可选自定义的 HTTP 的头字段。
  • send_as_json: 布尔值;请求是否应该以 application/json 格式发送。

LearningRateScheduler

学习速率定时器。

keras.callbacks.LearningRateScheduler(schedule, verbose=0)

参数

  • schedule: 一个函数,接受轮索引数作为输入(整数,从 0 开始迭代) 然后返回一个学习速率作为输出(浮点数)。
  • verbose: 整数。 0:安静,1:更新信息。

TensorBoard

Tensorboard 基本可视化。

keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=32, write_graph=True, write_grads=False, write_images=False, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None, embeddings_data=None, update_freq='epoch')

ReduceLROnPlateau

当标准评估停止提升时,降低学习速率。

keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=10, verbose=0, mode='auto', min_delta=0.0001, cooldown=0, min_lr=0)

当学习停止时,模型总是会受益于降低 2-10 倍的学习速率。 这个回调函数监测一个数据并且当这个数据在一定「有耐心」的训练轮之后还没有进步, 那么学习速率就会被降低。

例子

reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.2,
                              patience=5, min_lr=0.001)
model.fit(X_train, Y_train, callbacks=[reduce_lr])

参数

  • monitor: 被监测的数据。
  • factor: 学习速率被降低的因数。新的学习速率 = 学习速率 * 因数
  • patience: 没有进步的训练轮数,在这之后训练速率会被降低。
  • verbose: 整数。0:安静,1:更新信息。
  • mode: {auto, min, max} 其中之一。如果是 min 模式,学习速率会被降低如果被监测的数据已经停止下降; 在 max 模式,学习塑料会被降低如果被监测的数据已经停止上升; 在 auto 模式,方向会被从被监测的数据中自动推断出来。
  • min_delta: 对于测量新的最优化的阀值,只关注巨大的改变。
  • cooldown: 在学习速率被降低之后,重新恢复正常操作之前等待的训练轮数量。
  • min_lr: 学习速率的下边界。

CSVLogger

把训练轮结果数据流到 csv 文件的回调函数。

keras.callbacks.CSVLogger(filename, separator=',', append=False)

支持所有可以被作为字符串表示的值,包括 1D 可迭代数据,例如,np.ndarray。

LambdaCallback

在训练进行中创建简单,自定义的回调函数的回调函数。

keras.callbacks.LambdaCallback(on_epoch_begin=None, on_epoch_end=None, on_batch_begin=None, on_batch_end=None, on_train_begin=None, on_train_end=None)

创建一个回调函数

可以通过扩展 keras.callbacks.Callback 基类来创建一个自定义的回调函数。 通过类的属性 self.model,回调函数可以获得它所联系的模型。
下面是一个简单的例子,在训练时,保存一个列表的批量损失值:

class LossHistory(keras.callbacks.Callback):
    def on_train_begin(self, logs={}):
        self.losses = []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))

例: 记录损失历史

class LossHistory(keras.callbacks.Callback):
    def on_train_begin(self, logs={}):
        self.losses = []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))

model = Sequential()
model.add(Dense(10, input_dim=784, kernel_initializer='uniform'))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

history = LossHistory()
model.fit(x_train, y_train, batch_size=128, epochs=20, verbose=0, callbacks=[history])

print(history.losses)
# 输出
'''
[0.66047596406559383, 0.3547245744908703, ..., 0.25953155204159617, 0.25901699725311789]
'''

例: 模型检查点

from keras.callbacks import ModelCheckpoint

model = Sequential()
model.add(Dense(10, input_dim=784, kernel_initializer='uniform'))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

'''
如果验证损失下降, 那么在每个训练轮之后保存模型。
'''
checkpointer = ModelCheckpoint(filepath='/tmp/weights.hdf5', verbose=1, save_best_only=True)
model.fit(x_train, y_train, batch_size=128, epochs=20, verbose=0, validation_data=(X_test, Y_test), callbacks=[checkpointer])
Tensorflow2.x tf.keras.callbacks函数分析 Tensorflow2.x callbacks函数分析前言新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 你好! 博主在使用tensorflow做深度学习的研究时,发现这一块的内容水太深了,tensorflow目前最 阅读详情

相关推荐

keras和tensorflow使用 keras.callbacks.EarlyStopping 提前结束训练

一般来说机器学习的训练次数会设置到很大,如果模型的表现没有进一步提升,那么训练可以停止了,继续训练很可能会导致过拟合keras.callbacks.EarlyStopping就是用来提前结束训练的。 在keras中,使用方法如下: import keras early_stopping=keras.callbacks.EarlyStopping(monitor='val_loss', min_...

个人博客 1万+

Keras中的回调函数Callbacks详解

介绍 回调函数是一组在训练的特定阶段被调用的函数集,你可以使用回调函数来观察训练过程中网络内部的状态和统计信息。通过传递回调函数列表到模型的.fit()中,即可在给定的训练阶段调用该函数集中的函数。 虽然我们称之为回调“函数”,但事实上Keras的回调函数是一个类 keras.callbacks.Callback() 是回调函数的抽象类,定义新的回调函数必须继承自该类 类属性 params:...

wf592523813的博客 2万+

【深度学习框架学习| Keras Callbacks API详解2】Keras最简单的深度学习框架!你对基于 Keras Callbacks API了解多少?来看看吧

【深度学习框架学习| Keras Callbacks API详解2】Keras最简单的深度学习框架!你对基于 Keras Callbacks API了解多少?来看看吧

python练手项目实战 927

【tensorflow2.0】实例3

import tensorflow as tf class myCallback(tf.keras.callbacks.Callback): def on_epoch_end(self, epoch, logs={}): if(logs.get('loss')<0.4): print("\nLoss is low so cancelling training!") self.model.stop_training = True 这是让python回调的代码。它被

糊涂懿的博客 520

Keras Callbacks实战指南:训练过程白盒化与生产级稳定性保障

Keras Callbacks 是深度学习训练流程中实现事件驱动控制的核心机制,其本质是将黑盒式模型拟合转化为可监控、可干预、可审计的白盒化工程实践。它基于训练生命周期的标准化钩子(on_epoch_begin/on_batch_end等)提供解耦扩展能力,支撑早停、学习率动态调整、模型自动保存、TensorBoard日志等关键功能。在金融风控、工业质检等真实场景中,合理配置 EarlyStopping 的 patience 与 min_delta、ModelCheckpoint 的 save_best_o

weixin_30839881的博客 506

机器学习之keras callbacks使用攻略

机器学习之keras callbacks使用攻略

学习中 800

keras.callbacks.Callback / ModelCheckpoint / LearningRateScheduler

callbacks(回调函数):一组在训练的特定阶段被调用的函数集,可使用callbacks观察训练过程中网络内部的状态和统计信息。将callbacks传递到模型的.fit( )中,即可在给定的训练阶段调用该函数集中的函数。 callbacks实际上是一个类,回调函数是习惯性称呼。 1. keras.callbacks.Callback 回调函数的抽象类,定义新的回调函数必须继承自该类。...

weixin_42338058的博客 1200

从课堂笔记到动手实践:用Multisim仿真高频谐振功放(丙类)的完整流程

本文详细介绍了使用Multisim仿真高频谐振功放(丙类)的完整流程,从仿真环境准备到电路搭建、偏置网络设计、信号注入与波形观测,再到效率优化与性能验证。通过14个关键操作步骤,帮助读者将高频电子线路的理论知识转化为动手实践,深入理解丙类功放的非线性工作状态和效率优化技巧。

weixin_30701575的博客 520

keras和tensorflow使用 keras.callbacks.TensorBoard 可视化数据

TensorBoard 是一个非常好用的可视化工具 1.数据写入 在keras中,使用方法如下: import keras TensorBoardcallback=keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0, write_graph=True, write_images=False, embeddings_fr...

个人博客 1万+

单细胞测序数据分析——细胞通讯 CellChat

cellchat

G2530051386的博客 1万+

软件工程期末知识点总结【超详细】

生命周期模型(过程模型):瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。2、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N)3、语句覆盖 就是设计足够的调试用例,使得程序中的每个语句至少执行一次。 5、判定覆盖就是设计足够的测试用例,使得程序中每个判定的取“真”分支和取“假”分支至少都执行一次,判定覆盖又称分支覆盖 6、条件覆盖就是设计足够的测试用例,使得程序判定中的每个条件能获得各种可能的结果。7、软件开发时期通常分成4个阶段:总体设计、详细设计、编码和单元测试、综合测试。

这个人好有趣....hh 1万+

tf.keras.callbacks.EarlyStopping用法

tf.keras.callbacks.EarlyStopping( monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto', baseline=None, restore_best_weights=False ) monitor:监控的数据接口。keras定义了如下的数据接口可以直接使用: acc(accuracy),测试集的正确率 loss,测试集的损失函数(误差) val_acc(val_accuracy

Xurui_Luo的博客 7104

python:实现brutefore破解wifi(附完整源码)

python:实现brutefore破解wifi(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 5713

10_ tf.keras Callbacks概述

10_ 使用tf.keras Callbacks1. tf.keras Callbacks是什么2. 使用Callbacks3. tf.keras内置Callback函数4. Tensorboard详解 1. tf.keras Callbacks是什么 Keras官方文档:回调Callbacks Callbacks的本质是一组函数对象,代码层面就是一个Python List,在训练过程中的特定时期...

Hundreays 2366

针对小缺陷目标:在YOLOv11中引入小目标检测层

摘要: 针对YOLOv11在工业检测中漏检微小目标(如焊点气泡)的问题,研究发现深层特征下采样导致小目标信息丢失。通过在YOLOv11中增加P2检测层(4倍下采样)并融合浅层高分辨率特征,可显著提升小目标召回率。关键优化包括:调整模型结构、谨慎设计数据增强策略(减少MixUp、增加小目标粘贴)、重新分配损失权重(提升P2层权重)、优化推理速度(动态分辨率、通道裁剪)。同时强调数据质量的重要性,建议根据具体场景特性(目标尺寸、分布)定制方案,而非盲目调整模型。

as1225120794的博客 366

YOLOv13改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣ 已更新种不同的改进方案,专栏内的每篇文章皆,均可顺利运行。2️⃣ 订阅专栏即可进群获取以及从的各种答疑内容。3️⃣ 全新的YOLOv13改进专栏,,只为更好的满足论文发表的要求。专栏内容,专栏实时评分,全网最高,质量保证。🎫。。

Limiiiing的博客 9157

Keras Callbacks实战指南:构建稳定高效的模型训练流水线

Keras Callbacks 是 TensorFlow/Keras 中实现事件驱动式模型训练控制的核心机制,其本质是在训练循环的预定义钩子(如 on_batch_end、on_epoch_end)上挂载自定义逻辑,从而解耦监控、优化与保存等行为。它解决了手动调参导致的复用性差、时机错位和代码耦合问题,显著提升训练稳定性与可复现性。关键技术价值体现在自动化早停、动态学习率调整、权重智能保存、NaN安全拦截及训练过程数字孪生等能力上。广泛应用于图像分类、时序预测、医疗分割等需高鲁棒性与生产级可靠性的AI项目中

djph26741的博客 496

【LAMMPS学习】八、基础知识(2.1)2D模拟

此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。LAMMPS 源代码分发的examples目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。

荷塘阅色 1251

keras中的callbacks详解之EarlyStopping

keras中的callbacks整体学习见: keras中的callbacks详解 1. 认识Early Stop early stop是训练模型的过程中,避免过拟合,节省训练时间的一种方法 2. keras中的EarlyStopping 官方api:https://keras.io/api/callbacks/early_stopping/ 上图是官方给的使用方法说明,部分参数释义如下: monitor: 监控指标,如“val_loss” min_delta: 认为监控指标有提升的最小提升值。如果变化

要加油 6964

2、探索谷歌云平台(GCP):入门指南

本文全面介绍了谷歌云平台(GCP)的入门知识,涵盖其全球基础设施、核心服务和使用方法。内容包括GCP区域与可用区结构、创建免费账户、配置计算资源(如GCE虚拟机)、存储类型(PD、Filestore、GCS)、网络架构(VPC)、组织与项目管理、身份访问控制(IAM),以及计算、存储、数据库、大数据和人工智能等各类云服务。文章还提供了资源规划、安全管理和成本控制等实用建议,帮助用户快速上手并高效利用GCP构建可扩展的云解决方案。

uber9的博客 255

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

keras callbacks常用功能如ModelCheckpoint、ReduceLROnPlateau,EarlyStopping等

ModelCheckpoint: keras.callbacks.ModelCheckpoint(filepath,monitor='val_loss',verbose=0,save_best_only=False, save_weights_only=False, mode='auto', period=1) 参数: filename:字符串,保存模型的路径(可以将模型的准确率和损失等...

weixin_42074867的博客 6762

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Keras】Callbacks

回调函数使用 回调函数是一个函数的合集,会在训练的阶段中所使用。你可以使用回调函数来查看训练模型的内在状态和统计。你可以传递一个列表的回调函数(作为callbacks关键字参数)到Sequential或Model类型的.fit()方法。在训练时,相应的回调函数的方法就会被在各自的阶段被调用。 Callback keras.callbacks.Callback() 用来组...

mjiansun的专栏 920

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

tf.Keras (tf-1.15)使用记录4-model.fit方法及其callbacks参数

也可以通过继承类来创建自定义回调,允许在训练的不同阶段执行自定义的逻辑。# 每个 epoch 结束时执行print(f"结束 epochclass CustomCallback(tf . keras . callbacks . Callback) : def on_epoch_end(self , epoch , logs = None) : # 每个 epoch 结束时执行 keys = list(logs . keys()) print(f"结束 epoch {epoch } ,损失 = {

普通攻击往后拉的博客 1684

keras 回调函数Callbacks 断点ModelCheckpoint

整理自keras:https://keras-cn.readthedocs.io/en/latest/other/callbacks/ 参考:https://blog.csdn.net/li_haiyu/article/details/80894299 回调函数Callbacks 回调函数是一个函数的合集,会在训练的阶段中所使用。你可以使用回调函数来查看训练模型的内在状态和统计。你可以传递一...

jieshaoxiansen的博客 1万+

Keras中Callbacks的使用

Keras中Callbacks的使用 模块和方法 Modules experimental module: Public API for tf.keras.callbacks.experimental namespace. Classes class BaseLogger: Callback that accumulates epoch averages of metrics. 记录epoch的累计平均metrics class CSVLogger: Callback that streams epoch

qq_37329281的博客 734

TensorFlow2.0 Guide官方教程 学习笔记8- Keras custom callbacks

本笔记参照TensorFlow官方教程,主要是对‘Keras custom callbacks’教程内容翻译和内容结构编排,原文链接:Keras custom callbacks 目录 创建环境(Setup) 一、Keras callbacks介绍 二、接受回调的模型方法 三、回调方法概述 3.1训练/测试/预测的通用方法 3.2训练特定方法 3.3使用日志字典 四、Keras回调应用示例 4.1...

jackhh1的博客 790
上一篇: Keras学习笔记8——keras.layers.Activation
下一篇: Keras学习笔记10——keras.datasets
winter_python
博客等级 码龄10年 53粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值