Keras调用predict_classes预测单张交通标志图像维度不兼容报错原因问询
报错根本原因
你构建的Keras模型输入要求为4维张量,格式为(样本数量, 图像高度, 图像宽度, 通道数)。你处理单张图像后得到的数组是3维结构,形状为(高度, 宽度, 3),缺少了第一维的样本数量维度,不符合模型输入要求,因此触发维度不匹配的报错。
批量预测无报错的原因
批量预测时,你先将所有单张3维图像数组存入data列表,再通过np.array(data)转换为numpy数组,这一步会自动在最外层新增样本数量维度,最终得到的X_test形状为(测试集样本数, 高度, 宽度, 3),完全符合模型的4维输入要求,因此可以正常运行。
单张预测的修复方案
只需要给预处理后的单张图像数组新增一个样本维度即可,修改代码如下:
image=cv2.imread('C:/Users/Louay/input/Test/00000.png') image_from_array = Image.fromarray(image, 'RGB') size_image = image_from_array.resize((height, width)) test=np.array(size_image) # 新增样本维度,axis=0表示在最前面加维度 test = np.expand_dims(test, axis=0) pred = model.predict_classes(test.astype('float32')/255)
内容的提问来源于stack exchange,提问作者Louay GOURRIDA
相关产品推荐
相关产品推荐

