我使用Keras训练了一个CNN
模型,训练数据是文件夹中的图像(两种类型的蜜蜂)。我还有另一个文件夹,里面有未标记的bees
图像用于预测。
我能够预测单张图像(如下代码所示)。
from keras.preprocessing import imagetest_image = image.load_img('data/test/20300.jpg')test_image = image.img_to_array(test_image)test_image = np.expand_dims(test_image, axis = 0)prob = classifier.predict_proba(test_image)
结果:
probOut[214]: array([[1., 0.]], dtype=float32)
我希望能够预测所有图像(大约300张)。
有没有办法批量加载并预测所有图像?predict()
是否能够处理这种情况,因为它期望一个数组进行预测?
回答:
Model.predict_proba()
(实际上是predict()
的同义词)接受批量输入。根据文档:
为输入样本生成类概率预测。输入样本按批次处理。
你只需加载多个图像并将它们组合成一个numpy数组。通过扩展第0维,你的代码已经在test_image
中使用了一个批次。要完成这个操作,还有一个Model.predict_on_batch()
方法。
要加载一批测试图像,你可以使用image.list_pictures
或ImageDataGenerator.flow_from_directory()
(它与Model.predict_generator()
方法兼容,参见文档中的示例)。