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

MNIST训练的神经网络处理手绘28x28图片reshape报错如何解决

错误原因

你用cv2读取图片时默认返回的是3通道BGR彩色图像,即便图片肉眼看起来是黑白的,读入后的维度也是(28,28,3),总元素数为28*28*3=2352,和你要reshape的目标(1,28,28)总元素数784不匹配,因此触发报错。

修复方案

在resize操作前新增转灰度图的步骤即可,修改后的参考代码如下:

img_size=28
# 新增:将彩色图转换为单通道灰度图
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.resize(img, (img_size,img_size))
x = img.astype('float32')
x /= 255.0
# 直接调整维度匹配模型输入,删除冗余的vstack等操作
images = x.reshape(1, 28, 28)
# 如果你训练的模型要求输入带通道维度(形状为(1,28,28,1)),替换为下面这行即可
# images = x.reshape(1, 28, 28, 1)

res=model.predict(images)
print(f"识别的数字: {np.argmax(res)}")

额外注意

MNIST训练集的样本均为黑底白字,如果你自己绘制的是白底黑字的图片,归一化后需要反转像素值,否则会大幅降低识别准确率,添加代码如下:

x /= 255.0
# 新增:反转像素值适配MNIST数据集特征
x = 1.0 - x

内容的提问来源于stack exchange,提问作者Михаил Корчагин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:54:05