Keras:如何在ImageDataGenerator中使用predict_generator?

时间:2017-08-21 23:03:44

标签: python machine-learning keras deep-learning generator

我对Keras很新。我训练了一个模型,并希望预测存储在子文件夹中的一些图像(比如用于训练)。为了测试,我想预测来自7个类(子文件夹)的2个图像。下面的test_generator可以看到14张图片,但我得到了196张预测。哪里出错了?非常感谢!

fp=0x0

5 个答案:

答案 0 :(得分:17)

您可以将flow_from_directory中的batch_size值从默认值(即batch_size = 32)更改为batch_size = 1。然后将predict_generator的步骤设置为测试图像的总数。像这样:

test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_directory(
        test_dir,
        target_size=(200, 200),
        color_mode="rgb",
        shuffle = False,
        class_mode='categorical',
        batch_size=1)

filenames = test_generator.filenames
nb_samples = len(filenames)

predict = model.predict_generator(test_generator,steps = nb_samples)

答案 1 :(得分:5)

生成器中的默认batch_size为32。如果要对所有nb_samples个样本进行1个预测,则应使用batch_size来指定nb_samples。因此,batch_size为7时,您只需要14/7 = 2步即可获取14张图像

desired_batch_size=7

test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_directory(
        test_dir,
        target_size=(200, 200),
        color_mode="rgb",
        shuffle = False,
        class_mode='categorical',
        batch_size=desired_batch_size)

filenames = test_generator.filenames
nb_samples = len(filenames)

predict = model.predict_generator(test_generator,steps = 
                                   np.ceil(nb_samples/desired_batch_size))

答案 2 :(得分:3)

问题是在nb_samples中包含了predict_generator,这会创建14批14张图片

14*14 = 196

答案 3 :(得分:1)

使用拟合和预测,TensorFlow 现在通过生成器支持这两种方法。

答案 4 :(得分:0)

以防将来有人发现自己在这里想知道为什么使用 model.predict 和 model.predictor 获得的准确度分数不同。无论弃用警告如何,只需使用 model.predict_generator 选项。与生成器一起使用时,model.predict 似乎存在问题。