Keras:如何将predict_generator与ImageDataGenerator一起使用?
deep-learning
keras
machine-learning
python
5
0

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

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')

filenames = test_generator.filenames
nb_samples = len(filenames)

predict = model.predict_generator(test_generator,nb_samples)
参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

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

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)
收藏
评论

生成器中的默认batch_size为32。如果要对总计nb_samples的每个样本进行1个预测,则应使用batch_size指定nb_samples。因此,使用batch_size为7时,您只需要batch_size = 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))
收藏
评论

问题是列入nb_samplespredict_generator其创建14个图像的14批

14*14 = 196
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号