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

Keras调用model.evaluate评估ViT模型时准确率超100%原因

问题根因
  • 你在模型编译阶段错误配置了评估指标:将keras.metrics.SparseCategoricalCrossentropy(稀疏分类交叉熵,属于损失类指标,取值范围为0到正无穷)错误命名为accuracy,没有添加真正的分类准确率计算逻辑。你日志里所有标注为accuracy的数值本质都是交叉熵损失值,不是0~1区间的预测正确比例,乘以100换算成百分比自然会出现超过100%的异常结果,训练阶段显示的3.8、6.5、10.44这类"准确率"数值全是交叉熵值。
  • TopK准确率配置完全无效:你的任务总类别数仅为2(代码中定义no_classes = 2),却配置了SparseTopKCategoricalAccuracy(5, name="top-5-accuracy"),要求取预测概率最高的5个类别判断是否包含真实标签——总类别数不足5个时,无论模型输出什么结果,该指标永远为1.0,和你日志里全程top-5准确率固定为100%的现象完全吻合,这个指标没有任何参考价值。
  • 连带异常:你设置的模型检查点回调监控的是val_accuracy,由于该值本质是验证集交叉熵而非验证准确率,回调保存的权重根本不是验证集表现最优的模型权重,完全不符合保存最优模型的设计预期。
修复方案

将model.compile中的metrics配置替换为符合任务要求的正确指标即可,2分类任务的正确配置参考如下:

model.compile(
    optimizer=optimizer,
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=[
        keras.metrics.SparseCategoricalAccuracy(name="accuracy"),
        keras.metrics.SparseTopKCategoricalAccuracy(k=2, name="top-2-accuracy"),
    ],
)

修改后重新训练,日志中的accuracy指标会稳定落在01区间,乘以100后就是正常范围0100%的分类准确率,不会再出现数百 percent 的异常值,模型检查点回调也能正常基于验证准确率保存最优权重。

内容的提问来源于stack exchange,提问作者Md. Muhtadir Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:42:32