You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TensorFlow中从Callback历史中提取并保存最优损失对应的模型

解决方案

假设你使用的是TensorFlow/Keras框架的EarlyStopping回调,可通过以下方式获取并保存最优epoch对应的模型:

训练前配置回调参数(推荐方案)

在初始化EarlyStopping时开启restore_best_weights参数,训练结束后模型会自动加载监控指标最优的epoch权重,直接保存即可:

  1. 导入并配置回调
from tensorflow.keras.callbacks import EarlyStopping

early_stop_cb = EarlyStopping(
    monitor="val_loss",  # 按实际需求替换为你要跟踪的指标,比如loss、val_acc等
    patience=10,  # 连续多少轮指标无提升后触发早停
    restore_best_weights=True,  # 核心参数:训练结束后自动恢复最优轮次的权重
    verbose=1
)
  1. 训练时传入回调
# 以自编码器训练为例,按需修改你的fit参数
history = autoencoder.fit(
    x_train, x_train,
    epochs=200,
    validation_data=(x_val, x_val),
    callbacks=[early_stop_cb]
)
  1. 训练完成后直接保存模型,此时模型已对应最小损失的epoch权重
# 保存完整模型(包含结构和权重)
autoencoder.save("best_autoencoder.h5")
# 仅保存权重(需提前保留模型结构代码)
autoencoder.save_weights("best_autoencoder_weights.h5")

特殊情况处理

如果你已经完成训练,且初始化EarlyStopping时没有设置restore_best_weights=True,无法从当前训练完成的模型中回溯获取最优epoch的权重,只能重新训练时加上上述参数。


内容的提问来源于stack exchange,提问作者mlhub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:15:03