私はケラスが初めてです。モデルをトレーニングし、サブフォルダーに保存されているいくつかの画像を予測したい(トレーニング用など)。テストでは、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)
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)
ジェネレーターのデフォルトの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))
問題は、nb_samples
にpredict_generator
を含めることです。これにより、14個のイメージの14個のバッチが作成されます。
14*14 = 196