Keras模型预测输入形状不匹配问题解决方案咨询
解决Keras模型单图预测的形状不匹配问题
核心问题分析
报错的本质是模型期望输入带批量维度(batch dimension):训练时模型接收的是批量数据,形状为(None, H, W, C)(None代表任意样本数),但你传入的单张图像只有(H, W, C)三个维度,缺少了第一个代表样本数量的批量维度。
解决方案步骤
1. 为单张图像添加批量维度
在将图像传入模型预测前,用np.expand_dims为数组添加一个维度,把形状从(32, 32, 3)转为(1, 32, 32, 3)(1代表当前只有1个样本),匹配模型的输入要求。
2. 修正target_size参数的潜在问题
你修改target_size=(224,224)后出现的形状错误,大概率是图像加载后形状不符合预期。建议先打印图像数组的形状确认,再确保添加批量维度的步骤正确。
修正后的完整代码
import numpy as np from keras.preprocessing.image import img_to_array, load_img from tensorflow import keras # 加载模型 model = keras.models.load_model('Faces/model/alexnet') # 加载图像,target_size顺序为(高度, 宽度),需和模型输入一致 img = load_img('Faces/text.jpg', target_size=(32, 32)) # 转为数组并添加批量维度 x = img_to_array(img) x = np.expand_dims(x, axis=0) # 关键步骤:补充批量维度 # 执行预测 preds = model.predict(x) print('Predicted:', preds)
如果需要使用224×224的输入,只需修改target_size=(224, 224),同时确保模型输入层确实是224×224×3的形状,之后执行同样的批量维度补充步骤即可。
内容的提问来源于stack exchange,提问作者dsw
相关产品推荐
相关产品推荐

