web-dev-qa-db-ja.com

Keras:ImageDataGeneratorでpredict_generatorを使用する方法は?

私はケラスが初めてです。モデルをトレーニングし、サブフォルダーに保存されているいくつかの画像を予測したい(トレーニング用など)。テストでは、7つのクラス(サブフォルダー)から2つの画像を予測します。下のtest_generatorには14個の画像がありますが、196個の予測が得られます。間違いはどこですか?どうもありがとう!

test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_directory(
        test_dir,
        target_size=(200, 200),
        color_mode="rgb",
        shuffle = "false",
        class_mode='categorical')

filenames = test_generator.filenames
nb_samples = len(filenames)

predict = model.predict_generator(test_generator,nb_samples)
13

Flow_from_directoryのbatch_sizeの値をデフォルト値(batch_size = 32)からbatch_size = 1に変更できます。次に、predict_generatorのステップをテストイメージの総数に設定します。このようなもの:

test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_directory(
        test_dir,
        target_size=(200, 200),
        color_mode="rgb",
        shuffle = False,
        class_mode='categorical',
        batch_size=1)

filenames = test_generator.filenames
nb_samples = len(filenames)

predict = model.predict_generator(test_generator,steps = nb_samples)
21
Matin

ジェネレーターのデフォルトのbatch_sizeは32です。合計nb_samplesのすべてのサンプルに対して1つの予測を行いたい場合、nb_samplesをbatch_sizeで分割する必要があります。したがって、batch_sizeが7の場合、14の画像に対して14/7 = 2ステップだけが必要です。

desired_batch_size=7

test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_directory(
        test_dir,
        target_size=(200, 200),
        color_mode="rgb",
        shuffle = False,
        class_mode='categorical',
        batch_size=desired_batch_size)

filenames = test_generator.filenames
nb_samples = len(filenames)

predict = model.predict_generator(test_generator,steps = 
                                   np.ceil(nb_samples/desired_batch_size))
5
Ioannis Nasios

問題は、nb_samplespredict_generatorを含めることです。これにより、14個のイメージの14個のバッチが作成されます。

14*14 = 196
3
DJK