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

TensorFlow H5模型在FastAPI中预测结果恒为‘3’问题求助

MNIST模型部署FastAPI后始终输出'3'的排查方案

一、修复代码语法错误

你的FastAPI预测函数末尾存在语法遗漏,缺失闭合括号:

class_prediction = prediction_classes[np.argmax(score)

修正为:

class_prediction = prediction_classes[np.argmax(score)]

二、移除重复的Softmax处理

模型最后一层已配置softmax激活函数,输出结果本身就是各分类的概率分布。部署代码中重复执行softmax会扭曲概率分布,导致预测异常,直接使用模型原始输出即可:

# 移除 score = softmax(prediction[0])
score = prediction[0]
class_prediction = prediction_classes[np.argmax(score)]

三、对齐图片预处理逻辑与训练标准

MNIST训练集的标准格式是数字为白色(高像素值)、背景为黑色(低像素值),若你上传的图片是数字黑、背景白的反转格式,模型会完全无法识别,大概率输出固定类别。可添加像素反转测试:

normalized_image_data = 1.0 - normalized_image_data  # 反转像素值

同时确认训练时的归一化逻辑:若训练集未做/255.0处理,需同步调整部署代码的归一化步骤。

四、验证模型加载的正确性

即使依赖版本一致,也需确认部署环境中的mnist_model.h5是本地训练完成的正确文件:

  • 在部署代码中添加模型结构打印,对比本地模型:
print(ML_model.summary())
  • 用一张本地测试过的图片,在部署环境中直接加载预测,验证结果是否与本地一致。

五、检查输入张量形状

确保输入模型的张量形状与训练要求一致:
模型输入格式为(batch_size, 28, 28, 1),可打印normalized_image_data.shape确认是否为(1,28,28,1),避免因形状不匹配导致的预测异常。

六、确认Softmax函数的有效性

若softmax是自定义实现,可能存在逻辑错误,建议明确使用TensorFlow官方实现:

from tensorflow.nn import softmax

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:06:03