我正在尝试使用我训练过的 CNN keras 模型来对图像进行分类。 我正在使用
model.predict(img)
,但我收到了预期形状的错误。
它说找到的shape=(None,100,3
)和预期的形状=(None,100,100,3)
。
CNN 设置代码为:
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(image_size, image_size,dim3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(2, activation='softmax'))
其中
image_size = 100
和 dim3 = 3
img.shape
返回TensorShape([100,100,3])
。
为什么它期望第一个维度为空?我如何正确使用训练好的 CNN 进行分类和图像?
如果您也包含了其余的代码,那就更容易了,但我猜测错误是由于 TensorFlow 模型接受批次,您只需向图像数组添加第一个维度即可,
img= img[None, ...] # Create a batch