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

tf.callbacks.ModelCheckpoint告警:val_acc未识别,无法保存最优模型

解决ModelCheckpoint无法找到val_acc的问题

我一眼就看出问题所在了——你代码里的ModelCheckpoint监控的是val_acc,但你的训练日志里验证集的准确率指标明明是val_accuracy啊!这就是为什么每次训练到中途会弹出告警,直到 epoch 结束才显示正确的验证指标,但此时 checkpoint 已经跳过保存了。

解决方案

直接修改ModelCheckpoint的monitor参数,将val_acc替换为val_accuracy,修改后的回调代码如下:

callbacks = [
    TensorBoard(log_dir=r'C:\Users\reda\Desktop\logs\{}'.format(Name), histogram_freq=1),
    ModelCheckpoint(filepath=r"C:\Users\reda\Desktop\checkpoints\{}".format(Name), monitor='val_accuracy', verbose=2, save_best_only=True, mode='max')
]

原因说明

这是TensorFlow版本差异导致的指标命名规则变化:

  • 在TensorFlow 2.x及后续较新版本中,默认的准确率指标名称为accuracy(训练集)和val_accuracy(验证集)
  • 旧版TensorFlow(如1.x)可能使用acc和val_acc的命名方式

你的训练日志里明确显示每轮训练结束后输出的验证准确率是val_accuracy: 0.5000,只有让ModelCheckpoint的监控名称与实际输出的指标名称完全匹配,它才能正确识别验证集指标并完成最佳模型的保存。

内容的提问来源于stack exchange,提问作者Reda El Hail

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:52:35