我正在 Keras 中使用 CNN 训练、验证和测试图像分类器。我正在使用 flow_from_directory 生成训练、验证和测试数据集。
问题是,在 test_datagen 中,当我将 shuffle 标志设为 True 时,准确性下降,系统似乎没有给出任何好的结果,但我在训练和验证生成器中保持 shuffle = True。生成器如下:
训练和验证数据生成器:
datagen = ImageDataGenerator(rescale=1./255,
validation_split=0.20) # set validation split
train_generator = datagen.flow_from_directory(
data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical',
subset='training',
shuffle=True)
validation_generator = datagen.flow_from_directory(
data_dir, # same directory as training data
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical',
subset='validation',
shuffle=True)
测试数据生成器如下:
test_datagen = ImageDataGenerator(rescale=1./255) # set test split
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical',
shuffle=True)
对于模型.预测:
- 当
shuffle= False
结果如下:
精度:0.6472019464720195
- 当
shuffle= True
结果如下:
精度:0.30170316301703165
如果有人能解释这种行为,我将不胜感激