1

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 の場合:

  1. shuffle= False結果が次の場合:

精度: 0.6472019464720195

  1. shuffle= True結果が次の場合:

精度: 0.30170316301703165

誰かがこの動作を説明できれば、とても感謝しています

4

1 に答える 1