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