TensorFlow皮肤癌图像识别模型预测时形状不匹配错误求助
问题解决:TensorFlow皮肤癌图像识别模型预测形状不匹配
核心原因
Keras/TensorFlow的predict方法要求输入必须包含批量维度(即第一个维度代表样本数量),你传入的单张图像缺少该维度,导致模型误判各维度含义,引发形状不匹配错误。
解决步骤
在调用model.predict前,为图像数组添加批量维度即可修复:
修改后的代码
test = tf.keras.utils.load_img('./thumbnails/malicious/ISIC_0029615.jpg') test = tf.keras.utils.img_to_array(test) test = tf.image.resize(test, (256, 256)) test /= 255 plt.imshow(test) print(test.shape) # 输出 (256, 256, 3) test = tf.expand_dims(test, axis=0) # 新增:添加批量维度 print(test.shape) # 输出 (1, 256, 256, 3) model.predict(test)
报错细节解释
你看到的found shape=(32,256,3)是因为:当传入无批量维度的(256,256,3)数组时,模型会错误地将第一个维度(256)识别为批量大小,第二个维度(256)识别为图像高度,第三个维度(3)识别为图像宽度,完全不符合模型期望的(None,256,256,3)格式(None代表任意批量数)。添加批量维度后,模型就能正确映射各维度的含义。
额外注意事项
- 如果之前尝试过
reshape操作,需确保是reshape(1,256,256,3),避免通道或尺寸维度顺序错位。 - 确认模型输入层定义为
input_shape=(256,256,3)(通道在后格式),如果你的模型是通道在前格式(input_shape=(3,256,256)),则需先转置图像:test = tf.transpose(test, (2,0,1)),再添加批量维度。
内容的提问来源于stack exchange,提问作者Wiktor Fajkowski
相关产品推荐
相关产品推荐

