我使用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']
)。默认值: None。如果未提供,将自动推断类列表(类顺序将映射到标签索引,将按字母数字顺序排列)。
然而,当我对训练图像进行分类(以检查返回的标签是什么)时,我没有得到任何特定的顺序。训练进行得很好(准确率约为85%),并且在对同一类的图像进行分类时,输出标签具有一致性。
如何推断flow_from_directory
生成的标签编号并将其映射到类别?
回答:
您可以通过查看变量ImageDataGenerator.class_indices
来查看哪个类对应哪个整数
以下是如何使用它的示例
def build(source=None): datagen = ImageDataGenerator(rescale=1. / 255) data_generator = datagen.flow_from_directory( source, # 这是目标目录 target_size=(150, 150), # 所有图像将调整为150x150 batch_size=11, class_mode='sparse') class_dictionary = data_generator.class_indices return data_generator, class_dictionary