【问题标题】:how to use to_categorical when using ImageDataGenerator使用 ImageDataGenerator 时如何使用 to_categorical
【发布时间】:2018-12-20 16:29:46
【问题描述】:

我正在使用 Keras 对图像(多个类)进行分类,并且我正在使用 ImageDataGenerator。它会自动找到所有类,并且似乎没有在任何变量中写入标签。我想我需要使用 to_categorical 以矩阵形式存储我的标签,但我只是不知道在哪里使用它。

这是我的代码的 sn-p:

...
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')

# generator for training
train_generator = datagen.flow_from_directory(
train_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')

# generator for validation
val_generator = datagen.flow_from_directory(
val_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')

# generator for testing
test_generator = datagen.flow_from_directory(
test_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical')

# train
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?

【问题讨论】:

  • 您无需致电to_categorical。当您将class_mode='categorical' 传递给flow_from_directory() 时,生成器生成的标签将采用分类格式。

标签: python tensorflow machine-learning keras


【解决方案1】:

由于您传递的是class_mode='categorical',因此您不必使用to_categorical() 手动将标签转换为一个热编码向量。

生成器将返回分类标签。

【讨论】:

    【解决方案2】:

    如果你想要一个热向量的特定顺序,你可以通过classes 参数来提供它,这可能是有用的(即使在两年之后)。
    例如,如果您想要"dog"=[1,0]"cat"=[0,1],则显式设置:
    classes=["dog", "cat"]

    【讨论】:

    • 谢谢,正是我在此页面上寻找的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 2016-09-02
    • 1970-01-01
    • 2019-01-24
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多