郭震 AI公众号:郭震AI

16 Keras框架从零教程系列:模型训练之回调函数

发布日期:

最近更新:

分类: Keras

预计阅读: 3 分钟

阅读次数: 0

预计阅读3 分钟
结构重点8 个
图文要点6 张
正文规模1.4k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 8 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

训练回调函数流程图查看大图
训练回调函数流程图

回调函数让训练过程可控:该停就停,该保存就保存,该记录就记录,不必把控制逻辑塞进主流程。

训练回调函数实操核对图查看大图
训练回调函数实操核对图

我会先定义回调触发条件。监控哪个指标、耐心值多少、保存到哪里,都要写明确。

在上一篇中,我们讨论了如何使用 fit 方法进行模型训练。这一篇将专注于 Keras 中的回调函数,这些函数在训练期间提供了一种灵活的方式,帮助我们监控模型训练状态、保存模型、调整学习率等。

什么是回调函数?

Keras 中,回调函数是执行特定操作的一组机制,这些操作会在模型训练的不同阶段被自动触发。它们可以在训练开始之前、每个训练周期结束之后、每个训练批次结束之后等时刻执行。借助回调函数,我们可以轻松扩展模型的训练过程。

常用的回调函数

1. EarlyStopping

EarlyStopping 用于监控模型的性能,当性能不再提升时,它会自动停止训练。它的主要参数包括:

  • monitor:监控的指标(如 val_lossval_accuracy)。
  • patience:在监测指标未改善时,允许的耐心周期数。
  • verbose:是否输出详细信息。
  • mode:监测指标的最佳模式(minmax)。

示例代码:

from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import EarlyStopping

# 创建一个简单的模型
model = Sequential()
model.add(Dense(10, activation='relu', input_shape=(20,)))
model.add(Dense(1, activation='sigmoid'))

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 定义EarlyStopping回调
early_stopping = EarlyStopping(monitor='val_loss', patience=3, verbose=1)

# 模拟数据
import numpy as np
X_train = np.random.random((1000, 20))
y_train = np.random.randint(2, size=(1000, 1))
X_val = np.random.random((200, 20))
y_val = np.random.randint(2, size=(200, 1))

# 训练模型
model.fit(X_train, y_train, epochs=50, validation_data=(X_val, y_val), callbacks=[early_stopping])

2. ModelCheckpoint

ModelCheckpoint 用于在每个周期后保存模型。您可以选择在验证集上性能最好的模型被保存,或者按周期保存模型。

示例代码:

from keras.callbacks import ModelCheckpoint

# 定义ModelCheckpoint回调
checkpoint = ModelCheckpoint('best_model.h5', monitor='val_loss', save_best_only=True, mode='min', verbose=1)

# 训练模型并保存最佳模型
model.fit(X_train, y_train, epochs=50, validation_data=(X_val, y_val), callbacks=[checkpoint])

3. ReduceLROnPlateau

ReduceLROnPlateau 在监测指标不再提升时降低学习率,对改善模型性能非常有帮助。

Keras回调函数判断卡查看大图
Keras回调函数判断卡

使用 Keras 回调函数时,先看 EarlyStopping、ModelCheckpoint、日志记录、学习率调整和验证指标触发条件。

示例代码:

from keras.callbacks import ReduceLROnPlateau

# 定义ReduceLROnPlateau回调
reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=2, verbose=1, min_lr=1e-6)

# 训练模型
model.fit(X_train, y_train, epochs=50, validation_data=(X_val, y_val), callbacks=[reduce_lr])

4. TensorBoard

TensorBoard 提供了可视化工具,帮助我们更好地理解模型训练的过程。我们可以监控损失、准确率,甚至自定义的指标。

示例代码:

from keras.callbacks import TensorBoard

# 定义TensorBoard回调
tensorboard = TensorBoard(log_dir='./logs', histogram_freq=1, write_graph=True)

# 训练模型
model.fit(X_train, y_train, epochs=50, validation_data=(X_val, y_val), callbacks=[tensorboard])

结合使用回调函数

在实际训练过程中,我们可以组合多个回调函数来优化模型训练。例如,结合 EarlyStopping, ModelCheckpointReduceLROnPlateau,可以在验证损失不再减少时自动停止训练并保存最佳模型,同时在必要时调整学习率。

Keras阅读地图卡查看大图
Keras阅读地图卡

读《Keras框架从零教程系列:模型训练之回调函数》时,可以先看配图里的任务、概念、练习和判断点,再回到正文补细节。这样更容易判断这篇内容能放到哪个真实场景里。

示例代码:

callbacks = [
    EarlyStopping(monitor='val_loss', patience=3, verbose=1),
    ModelCheckpoint('best_model.h5', monitor='val_loss', save_best_only=True, mode='min', verbose=1),
    ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=2, verbose=1, min_lr=1e-6),
    TensorBoard(log_dir='./logs', histogram_freq=1, write_graph=True)
]

# 训练模型
model.fit(X_train, y_train, epochs=50, validation_data=(X_val, y_val), callbacks=callbacks)
Keras框架从零教程系列:模型训练之回调函数应用复盘卡查看大图
Keras框架从零教程系列:模型训练之回调函数应用复盘卡

读到这里,可以把《Keras框架从零教程系列:模型训练之回调函数》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

Keras框架从零教程系列:模型训练之回调函数应用检查卡查看大图
Keras框架从零教程系列:模型训练之回调函数应用检查卡

读完《Keras框架从零教程系列:模型训练之回调函数》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

小结

在本篇教程中,我们详细介绍了 Keras 中的回调函数,它们是增强模型训练能力的重要工具。通过合理地使用这些回调函数,我们不但可以监控训练过程,还能改善模型性能,为后续的模型评估与预测打下良好的基础。

在下一篇中,我们将讨论如何评估训练好的模型的性能以及如何进行预测,敬请期待!

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

Keras框架从零教程系列:模型训练之回调函数适合谁读?

这是 Keras 入门 系列第 16 / 28 篇,适合正在学习Keras 入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇Keras 入门教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...