Keras で CNN を使用して画像分類器をトレーニング、検証、およびテストしています。トレーニング、検証、およびテスト データセットを生成するために、flow_from_directory を使用しています。
問題は、test_datagen でシャッフル フラグを 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)
model.predict の場合:
shuffle= False
結果が次の場合:
精度: 0.6472019464720195
shuffle= True
結果が次の場合:
精度: 0.30170316301703165
誰かがこの動作を説明できれば、とても感謝しています