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

tf.callbacks.ModelCheckpoint无法识别val_accuracy问题求助

问题根源与解决方法

核心问题

你的模型是多输出模型(从日志里的table_mask_loss、col_mask_loss能看出),编译时用metrics=['accuracy'],Keras会为每个输出单独生成对应的准确率指标,比如table_mask_accuracy、col_mask_accuracy,验证阶段的指标名会加上val_前缀,也就是val_table_mask_accuracy和val_col_mask_accuracy——但你在回调里监控的是val_accuracy,这个统一指标在多输出模型里根本不存在,所以会出现找不到的警告。

另外还有两个明显错误:

  • 准确率是越高越好,回调的mode应该设为"max",而非"min"
  • 你定义了EarlyStopping但没加到callbacks列表里,完全没生效

具体修复步骤

1. 修正回调的监控指标与模式

根据需求选择要监控的验证准确率,同时把mode改成"max":

# 监控表格掩码的验证准确率,保存最优模型
model_checkpoint = tf.keras.callbacks.ModelCheckpoint(
    "table_net.h5", 
    monitor='val_table_mask_accuracy', 
    save_best_only=True, 
    verbose=1,  # 改成1可查看保存日志,方便排查
    mode="max",
    save_freq='epoch'
)

# 同步修正EarlyStopping
es = tf.keras.callbacks.EarlyStopping(
    monitor='val_table_mask_accuracy', 
    mode='max', 
    patience=5
)

如果想监控列掩码的准确率,把monitor改成val_col_mask_accuracy即可。

2. 把EarlyStopping加入回调列表

修改model.fit的callbacks参数,让EarlyStopping生效:

history = model.fit(
    train_dataset,
    epochs=EPOCHS,
    steps_per_epoch=train_steps,
    validation_data=test_dataset,
    validation_steps=VALIDATION_STEPS,
    callbacks=[model_checkpoint, es]  # 加入EarlyStopping
)

3. 可选:自定义综合验证准确率

如果需要监控一个统一的综合准确率,可以在编译时自定义指标,比如对两个输出的准确率取平均:

def combined_accuracy(y_true, y_pred):
    # 适配多输出模型的格式,计算两个输出的准确率均值
    table_acc = tf.keras.metrics.Accuracy()(y_true[0], tf.argmax(y_pred[0], axis=-1))
    col_acc = tf.keras.metrics.Accuracy()(y_true[1], tf.argmax(y_pred[1], axis=-1))
    return (table_acc + col_acc) / 2

model.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=init_lr, epsilon=1e-8),
    loss=losses,
    metrics=[combined_accuracy]  # 使用自定义综合指标
)

此时验证阶段的指标名为val_combined_accuracy,回调里直接监控这个名称即可。

4. 检查验证数据与steps设置

确保test_dataset的输出格式和模型的输入输出完全匹配,同时确认VALIDATION_STEPS的计算逻辑合理——如果数值过小,可能导致验证数据未被完整遍历,影响指标计算的完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:56:12