我在使用Keras进行图像分类(多类别),并且使用了ImageDataGenerator。它会自动找到所有类别,并且似乎没有将标签写入任何变量中。我认为我需要使用to_categorical来以矩阵形式存储我的标签,但我不知道在哪里使用它。
这是我代码的一部分:
...datagen = ImageDataGenerator( rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest')# 用于训练的生成器train_generator = datagen.flow_from_directory(train_dir,target_size=(img_width, img_height),batch_size=batch_size,class_mode='categorical')# 用于验证的生成器val_generator = datagen.flow_from_directory(val_dir,target_size=(img_width, img_height),batch_size=batch_size,class_mode='categorical')# 用于测试的生成器test_generator = datagen.flow_from_directory(test_dir,target_size=(img_width, img_height),batch_size=batch_size,class_mode='categorical')# 训练model.fit_generator(train_generator,steps_per_epoch=nb_train_samples // batch_size,epochs=epochs,validation_data=val_generator,validation_steps=nb_validation_samples // batch_size)
生成器只是显示“找到属于5个类别的442张图像。”之类的话。我如何在我的标签上使用to_categorical?
回答:
由于你传递了class_mode='categorical'
,你不需要手动使用to_categorical()
将标签转换为独热编码向量。
生成器会返回分类标签。