imagedatagen.flow_from_directory() - 随机测试集预测?

imagedatagen.flow_from_directory() - random test set predictions?

我通过 ImageDataGenerator() 为 CNN 二元分类问题加载我的训练集和测试集,如下所示:

datagen_train = ImageDataGenerator(validation_split=0.2, zoom_range = 0.2, width_shift_range=0.1, height_shift_range=0.1, horizontal_flip = True,
datagen_test = ImageDataGenerator()

train_it = cnn2_datagen.flow_from_directory(TRAIN_FOLDER, class_mode='binary', batch_size=32, target_size=(150,150), subset='training')
val_it = cnn2_datagen.flow_from_directory(TRAIN_FOLDER, class_mode='binary', batch_size=32, target_size=(150,150), subset='validation')
test_it = cnn2_datagen_test.flow_from_directory(TEST_FOLDER, class_mode='binary', batch_size=32, target_size=(150,150))

然后我创建我的模型并在其上拟合训练和验证数据集。之后,使用 model.evaluate(test_it) returns 准确率为 88%。然而,问题出现在使用 model.predict(test_it) 时,即使我使用完全相同的测试集,输出预测总是不同的顺序!例如:

y_pred = model.predict(test_it)

print(y_pred)

[0, 0, 1, 1]

然后我再次 运行 相同的代码块, model.predict(test_it) 的结果是 [1, 0, 0, 1] 。这种情况每次都会发生,而不会更改我的代码中的任何内容并阻止我创建混淆矩阵,因为我无法将测试集中每个数据点的真实标签与 y_pred 进行比较,因为它是不同的预测顺序.

任何关于为什么会发生这种情况的建议将不胜感激。

在 flow_from_directory 中为 test_it 代码设置 suffle=False