flow_from_directory
を使用して、次の構造のフォルダーからトレーニングセットを取得しています。
train
class1
class2
class3
...
ジェネレーターは次のように呼び出されます。
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_height, img_width),
batch_size=32,
class_mode='categorical')
引数classes
を設定していませんが、ラベルをアルファベット順に取得することを期待していました。
classes:オプションのクラスサブディレクトリのリスト(例:
['dogs', 'cats']
)。デフォルト:なし。指定しない場合、クラスのリストが自動的に推測されます(および、ラベルインデックスにマップされるクラスの順序は英数字になります)。
ただし、トレーニング画像を分類すると(どのラベルが返されているかを確認するため)、特定の順序を取得できません。トレーニングは適切に行われ(精度は約85%)、同じクラスの画像を分類するときに、出力ラベルと一貫性があります。
flow_from_directory
によって生成されたラベル番号を推測してクラスにマッピングするにはどうすればよいですか?
変数ImageDataGenerator.class_indices
を見ると、どのクラスがどの整数に対応するかがわかります。
使い方の例はこちら
def build(source=None):
datagen = ImageDataGenerator(rescale=1. / 255)
data_generator = datagen.flow_from_directory(
source, # this is the target directory
target_size=(150, 150), # all images will be resized to 150x150
batch_size=11,
class_mode='sparse')
class_dictionary = data_generator.class_indices
return data_generator, class_dictionary