【发布时间】:2017-07-12 07:24:45
【问题描述】:
我用 Keras 训练了一个图像分类器,最后我用代码保存了模型
model.save('model1.h5')
现在,当我实际尝试使用此模型预测另一张图像时,我正在使用代码
from keras.models import load_model
from keras.preprocessing import image
import numpy as np
# dimensions of our images
img_width, img_height = 231, 172
# load the model we saved
model = load_model('model1.h5')
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
# predicting images
img = image.load_img('a.png', target_size=(img_width, img_height))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
images = np.vstack([x])
classes = model.predict_classes(images, batch_size=10)
print(classes)
我收到一个错误提示
ValueError: 检查时出错:预期 conv2d_1_input 的形状为 (None, 231, 172, 1),但得到的数组的形状为 (1, 231, 172, 3)
我使用的图像都是灰度模式,所以我知道我需要将 3 更改为 1,但我不确定如何使用此代码?
另外,当我训练图像时,我设置了
train_datagen = ImageDataGenerator(rescale=1. / 255)
test_datagen = ImageDataGenerator(rescale=1. / 255)
但我不确定我会把代码放在哪里来重新调整它,如果它甚至需要的话
另外,我设置
batch_size = 16
我在代码中看到了预测我放的
classes = model.predict_classes(images, batch_size=10)
我也应该将 batch_size 更改为 16 吗?还是把它留在 10 点?
再次感谢大家!
【问题讨论】:
-
首先,将图像从 RGB 更改为灰度,您可以使用
opencv或skimage,然后将其传递给您的模型
标签: image-processing machine-learning keras