使用Keras预测单张图片失败:输入维度不匹配问题求助
解决Keras模型输入维度不匹配问题
问题根源
你的baseline_model是基于全连接(Dense)层构建的,它要求输入是二维数组:形状为(样本数量, 总特征数)。但你当前传入的图片经过处理后是四维数组(1, 150, 150, 3),这和模型期望的输入维度完全不匹配,所以才会抛出错误。
修复方案
你需要将读取并缩放后的图片展平成一维特征向量,再添加批量维度(对应样本数量为1),让输入形状符合模型要求。修改后的预测代码如下:
import cv2 x = cv2.imread('download.png') x = cv2.resize(x, (150, 150)) # 展平图片并调整为模型需要的输入形状:(1, 总特征数) # -1 会自动计算总特征数,这里就是 150*150*3 = 67500 x = x.flatten().reshape(1, -1) pred = model.predict_classes(x) print(pred)
如果你已经在训练时定义了num_pixels = 150 * 150 * 3,也可以直接写:
x = x.reshape(1, num_pixels)
额外注意事项
- 确认训练时的图片预处理逻辑和预测时一致:比如
cv2.imread默认读取的是BGR格式,如果你的模型是用RGB格式图片训练的,需要添加x = cv2.cvtColor(x, cv2.COLOR_BGR2RGB)来转换格式,避免预测结果偏差。 - 如果后续想改用CNN模型(支持四维图片输入),那当前的四维输入形状就没问题,但全连接模型必须展平输入。
内容的提问来源于stack exchange,提问作者slimboy
相关产品推荐
相关产品推荐

