28365备用网址

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

📅 2026-06-28 20:23:24 👤 admin 👁️ 5672 ❤️ 960
16 Keras框架从零教程系列:模型训练之回调函数

示例代码:

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 回调函数时,先看 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, ModelCheckpoint 和 ReduceLROnPlateau,可以在验证损失不再减少时自动停止训练并保存最佳模型,同时在必要时调整学习率。

查看大图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 中的回调函数,它们是增强模型训练能力的重要工具。通过合理地使用这些回调函数,我们不但可以监控训练过程,还能改善模型性能,为后续的模型评估与预测打下良好的基础。

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

上一则传输
手机如何设置呼叫转移
下一则传输
lol巨龙之巢实力怎么 英雄联盟巨龙之巢特点

相关星图