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

TensorFlow图像分类模型训练精度达标但每次返回相同预测问题

手指识别模型预测异常的问题排查与修复

你的模型训练/验证精度显示95%以上,但每次预测返回近乎一致的结果,核心是两处代码逻辑错误:

1. 损失函数与模型输出不匹配

模型最后一层使用softmax激活输出概率分布,但编译时设置了SparseCategoricalCrossentropy(from_logits=True)。from_logits=True仅适用于未经过激活的原始输出(logits),此配置会导致损失计算逻辑错误,模型实际并未学习到有效特征,训练精度是虚假的。

修复:
将损失函数的from_logits改为False:

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['accuracy'])

2. 预测阶段重复执行Softmax

模型输出已经是softmax处理后的概率,你在预测时又调用tf.nn.softmax(predictions[0]),对已归一化的概率再次软化,导致结果失真。

修复:
直接使用模型输出的概率值:

predictions = model.predict(img_array)
score = predictions[0]  # 无需再次计算softmax

额外验证点

  • 检查验证集路径dataset_pathh是否为笔误,确保训练/验证集是独立的,避免因数据集重复导致精度虚高。
  • 确认预测时的图像预处理和训练完全一致:当前代码中img_array / 255和训练时的Rescaling(1./255)匹配,灰度转换逻辑也没问题,无需调整。

修改后重新训练模型,即可得到符合预期的预测结果。

内容的提问来源于stack exchange,提问作者Kristaps Ālmanis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:32:49