如何解释keras"predict_generator"输出?

ani*_*wat 6 python machine-learning neural-network deep-learning keras

我正在实施图像分类项目.我已经生成了模型并保存了它.它训练有素.当我在keras中使用predict_generator对测试图像进​​行分类时,对于每个图像,我在预测numpy数组中为每个图像获取多行.

预测代码:

from keras.models import load_model
from keras.preprocessing.image import ImageDataGenerator
from keras.preprocessing.image import img_to_array, load_img
import numpy as np

# dimensions of our images.
img_width, img_height = 150, 150
batch_size = 16

test_model = load_model('first_try1.h5')


img = load_img('data/train/dogs/dog.2.jpg',False,target_size=(img_width,img_height))

validation_data_dir="test1"

test_datagen = ImageDataGenerator(rescale=1. / 255)
validation_generator = test_datagen.flow_from_directory(
    validation_data_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode='binary')
print(len(validation_generator.filenames))
predictions=test_model.predict_generator(validation_generator,len(validation_generator.filenames));
#print(predictions)
Run Code Online (Sandbox Code Playgroud)

输出:

Found 5 images belonging to 1 classes.
5
[[ 0.0626688 ]
 [ 0.07796276]
 [ 0.46529126]
 [ 0.28495458]
 [ 0.07343803]
 [ 0.07343803]
 [ 0.0626688 ]
 [ 0.46529126]
 [ 0.28495458]
 [ 0.07796276]
 [ 0.0626688 ]
 [ 0.28495458]
 [ 0.07796276]
 [ 0.46529126]
 [ 0.07343803]
 [ 0.07796276]
 [ 0.46529126]
 [ 0.0626688 ]
 [ 0.07343803]
 [ 0.28495458]
 [ 0.0626688 ]
 [ 0.07796276]
 [ 0.46529126]
 [ 0.07343803]
 [ 0.28495458]]
Run Code Online (Sandbox Code Playgroud)

Mar*_*jko 11

因此,根据文档,您可以调用您的生成器len(validation_generator.filenames)次数 - 每次调用时batch_size都会提供大小样本.由于如何ImageGenerator实现 - 如果没有足够的文件来完成批处理(在您的情况下batch_size=16,您的文件夹中只有5个图像) - 返回最大可能的图像数 - 在您的情况下 - 5.所以你得到len(validation_generator.filenames) * 5 = 25图像评估 - 这就是为什么你有这样的结果(如果仔细观察 - 你在每5个数字中有相同的值).为了获得这些样本,filenames您需要创建一个新的生成器,其shuffle选项设置为False和使用batch_size=5并调用一次(或者例如使用batch_size=1并调用它5次).