Machine learning 在多个课程上进行培训时,如何在Keras中获取标签ID?

Machine learning 在多个课程上进行培训时,如何在Keras中获取标签ID?,machine-learning,keras,deep-learning,conv-neural-network,Machine Learning,Keras,Deep Learning,Conv Neural Network,我使用从具有以下结构的文件夹中获取培训集: train class1 class2 class3 ... 发电机的名称如下所示: train_generator = train_datagen.flow_from_directory( train_data_dir, target_size=(img_height, img_width), batch_

我使用从具有以下结构的文件夹中获取培训集:

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
,但我希望得到按字母顺序排列的标签

:类子目录的可选列表(例如
['dogs','cats']
)。默认值:无。如果未提供,将自动推断类列表(并且将映射到标签索引的类的顺序将是字母数字)

然而,当我对训练图像进行分类(用于检查返回的标签)时,我没有得到任何特定的排序。训练进行得很顺利(准确率约为85%),并且在对来自同一类的图像进行分类时,与输出标签保持一致


如何从目录中推断由
flow\u生成的标签号并将其映射到类?

查看变量
ImageDataGenerator,可以看到哪个类对应于哪个整数。类索引

下面是一个如何使用它的示例


此问题已由解决。我得到错误:“ImageDataGenerator”对象没有属性“class\u Indexes”,这可能不用说,但如果您不希望在运行
build()
函数时自动返回class\u字典,则可以执行以下操作:
global class\u dictionary
,然后
class\u dictionary=data\u generator.class\u index
,这将允许您全局访问class\u dictionary。在使用load\u model加载经过训练的模型时,是否仍然可以获取类ID?我使用的是我从网上得到的一个预先训练过的模型。
    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