如何使用经过训练的keras模型标记测试数据?

时间:2017-10-25 03:54:18

标签: python-3.x image-processing keras conv-neural-network

我正在研究以下keras卷积神经网络教程https://gist.github.com/fchollet/0830affa1f7f19fd47b06d4cf89ed44d

训练模型后,我想在样本图像上测试模型,并标记图像。我意识到我必须使用predict方法生成一个数组,该数组显示哪个标签获得特定图像的分数。但是我在使用这种方法时遇到了麻烦。如果图像位于 test_images 文件夹中,并且有20个图像,我如何测试这些图像并获得预测?

这就是我使用一张图片的方式(即使我想要多张图片):

image = cv2.imread('test1.jpg')
image = cv2.resize(image,(224,224))
features = np.swapaxes(np.swapaxes(image, 1, 2), 0, 1)
predictions = model.predict(features)

这会引发以下错误:

ValueError: Error when checking : expected conv2d_1_input to have 4 dimensions, but got array with shape (3, 224, 224)

非常感谢!

我之前咨询过的一些问题:

Simple Neural Network in Python not displaying label for the test image https://github.com/fchollet/keras/issues/315

1 个答案:

答案 0 :(得分:2)

model.predict通过处理样本数组而不仅仅是一个图像来工作,因此您缺少批处理/样本维度,在您的情况下,它只是一个图像。你只需要重塑数组:

features = features.reshape((1, 3, 224, 224)

然后将其传递给预测。