Keras CNN图像分类模型预测形状不兼容问题及使用咨询
解决Keras CNN模型预测时的形状不兼容问题
为什么模型期望形状是(None, 100, 100, 3)
这里的None代表批量维度,Keras模型默认是为处理批量数据设计的——不管训练、验证还是预测,都需要以批量形式输入。训练时你喂的是一批图片(比如形状(32,100,100,3),32是批量大小),所以模型输入层会保留第一个维度作为可变的批量大小,用None表示可以接受任意批量数。
你的输入img.shape是(100,100,3),只有单张图片的维度,缺少了批量维度,因此模型报错不兼容。
正确的预测步骤
只需要给单张图片增加一个批量维度,把形状从(100,100,3)转换成(1,100,100,3),具体有两种简单方法:
- 用NumPy扩展维度:
import numpy as np img = np.expand_dims(img, axis=0) # 在第0位增加批量维度 - 用TensorFlow扩展维度:
import tensorflow as tf img = tf.expand_dims(img, axis=0)
处理后打印img.shape确认是(1,100,100,3),再调用model.predict(img)即可正常运行。预测结果会是形状为(1, num_classes)的数组,对应这张图片的分类概率。
内容的提问来源于stack exchange,提问作者Daniel Elkin
相关产品推荐
相关产品推荐

