Keras flow_from_directory类索引

时间:2017-05-05 20:36:33

标签: keras

我曾经手动制作它,但我现在使用flow_from_directory用我自己的数据训练我的网络。我只有一个问题。当我制作model.predict()时,我怎么知道我的预测索引0是针对标签类别狗而索引1是针对类别猫?

我正在使用的代码如下。

train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        train_images_path,  
        target_size=(64, 64),  
        batch_size=batch_size)  


validation_generator = test_datagen.flow_from_directory(
        validate_images_path,
        target_size=(64, 64),
        batch_size=batch_size)
early_stopping = keras.callbacks.EarlyStopping(monitor='val_acc', min_delta=0, patience=3, verbose=1, mode='auto')
history = model.fit_generator(
        train_generator,
        steps_per_epoch=1700,
        epochs=epochs,
        verbose=1,
        callbacks=[early_stopping],
        validation_data=validation_generator,
        validation_steps=196
)

我想知道的是对图像与地面实况标签。

谢谢

3 个答案:

答案 0 :(得分:8)

您可以使用class_indices属性生成生成器生成的每个类的索引。

print(validation_generator.class_indices)

...简单

答案 1 :(得分:1)

非常简单。当您预处理数据时,只需用一些特定的整数替换类标签(您可以将其称为id)。因此,当您从模型的输出计算损失或准确度时,只需将预测与基本事实按整数标签(id)进行比较。

如果您需要标签文本,可以从id(整数)中取回。

答案 2 :(得分:1)

收集数据时,您可以定义数据。没有规则。但一个简单的检查方法是:

  • 看看你的第一张训练图像是什么,亲自看看:它是猫还是狗?
  • 然后看训练Y(结果/类/期望输出),是[0,1]还是[1,0]?

这将回答你的问题。

要从生成器中获取一个样本,您可以看到以下问题:How to get one value from a generator in Python?

Keras documentation中所定义,生成器输出是(输入,目标)的元组