gpt4 book ai didi

python - 防止 Predict_generator 打乱批处理

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:27 25 4
gpt4 key购买 nike

我正在尝试检查我的模型在验证数据集上的性能。因此,我使用 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(...) 时,输出预测都是不同的。

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

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

最佳答案

没有进行随机化或洗牌,发生的情况是,由于验证生成器的批量大小并未完全除以样本数,因此剩余的样本会溢出到下次调用生成器时,这会造成困惑一切。

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

关于python - 防止 Predict_generator 打乱批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52989085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com