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

TF.Keras模型预测自定义图像时Matrix size-incompatible报错问题咨询

报错原因
  • 输入缺少batch维度:Keras的predict接口要求输入张量的第一维为批量大小(batch_size),你注释了np.expand_dims相关代码,输入模型的gray是形状为(15,15)的二维数组,模型会误将第一个15识别为batch_size,第二个15识别为特征长度,和第一层全连接层要求的675维输入特征不匹配。
  • 输入通道数和训练阶段不匹配:从报错中全连接层权重维度[675,128]反推,你训练模型时的输入是15*15*3的三通道图像(15×15×3=675),但预测阶段你将图像转为了单通道灰度图,就算补上batch维度,Flatten后也只有225维,依然不匹配。
解决方案
  • 恢复被注释的预处理代码,给输入增加batch维度:
trial = cv2.imread("Trial\\3.png")
# 如果训练用的是彩色图,删除下面这行灰度转换代码
gray = cv2.cvtColor(trial, cv2.COLOR_BGR2GRAY)
plt.imshow(gray)
plt.show()
gray = cv2.resize(gray, (15, 15))
# 取消下面两行的注释
gray = img_to_array(gray)
gray = np.expand_dims(gray, axis=0)

pred = model.predict(gray)
  • 对齐输入通道数:如果训练时用的是三通道彩色图,直接删除预测代码中的cv2.cvtColor(trial, cv2.COLOR_BGR2GRAY)灰度转换步骤即可;如果训练时确实用的是单通道灰度图,需要重新调整模型结构,确保输入维度和训练数据匹配。
  • 可选优化:定义模型时显式指定输入形状,避免后续维度混乱,比如三通道15×15输入的场景下,第一层Flatten写成:
    model.add(tf.keras.layers.Flatten(input_shape=(15,15,3)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:45:08