【问题标题】:Prevent predict_generator from shuffling batches防止 predict_generator 改组批次
【发布时间】:2019-03-30 01:19:01
【问题描述】:

我正在尝试检查我的模型在验证数据集上的性能。因此,我使用predict_generator 从我的validation_generator 返回预测。但是,我无法将预测与从validation_generator.classes 返回的真实标签匹配,因为我的预测顺序混淆了。

这就是我初始化生成器的方式:

BATCH_SIZE = 64
data_generator = ImageDataGenerator(rescale=1./255, 
                                    validation_split=0.20)

train_generator = data_generator.flow_from_directory(main_path, target_size=(IMAGE_HEIGHT, IMAGE_SIZE), shuffle=False, seed=13,
                                                     class_mode='categorical', batch_size=BATCH_SIZE, subset="training")

validation_generator = data_generator.flow_from_directory(main_path, target_size=(IMAGE_HEIGHT, IMAGE_SIZE), shuffle=False, seed=13,
                                                     class_mode='categorical', batch_size=BATCH_SIZE, subset="validation")

#Found 4473 images belonging to 3 classes.
#Found 1116 images belonging to 3 classes.

现在我像这样使用 predict_generator:

validation_steps_per_epoch = np.math.ceil(validation_generator.samples / validation_generator.batch_size)

predictions = model.predict_generator(validation_generator, steps=validation_steps_per_epoch)

我意识到我的验证数据大小 (=1116) 和 validation_steps_per_epoch (=1152) 不匹配。由于这两个不匹配,我发现每次运行 model.predict_generator(...) 时输出 predictions 都不同。

除了将 batch_size 更改为 1 以确保生成器遍历所有样本之外,还有其他方法可以解决此问题吗?

我在这里keras predict_generator is shuffling its output when using a keras.utils.Sequence 找到了一个有类似问题的人,但是他的解决方案不能解决我的问题,因为我没有编写任何自定义函数。

【问题讨论】:

  • @AsronDT 你找到解决问题的方法了吗?

标签: python tensorflow keras


【解决方案1】:

没有进行随机化或洗牌,发生的情况是,由于验证生成器的批量大小不能完全除样本数,所以剩余的样本会溢出到下一次调用生成器时,这就搞砸了一切。

您可以为验证生成器设置一个批量大小,将验证样本的数量精确除以,或者将批量大小设置为 1。

【讨论】:

  • 我在将一小部分测试图像放入预训练模型时遇到了类似的问题。但是,我观察到,仅将批量大小设置为 1 并不能解决这种洗牌问题,而在生成器中也没有 shuffle=False (你已经拥有了......我只是想把它放在那里给其他可能有同样问题的人)我做的问题)。但是,如果它有帮助,我注意到 Keras #6745 描述了这个问题,据称在 PR #6891 中已修复。
猜你喜欢
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 1970-01-01
  • 2015-11-06
  • 2011-09-02
  • 2017-04-09
相关资源
最近更新 更多