来自目录类索引的Keras流

来自目录类索引的Keras流,keras,Keras,我以前是手动创建的,但现在我使用来自目录的flow_来使用我自己的数据训练我的网络。我只有一个问题。当我制作model.predict()时,我怎么知道我的预测索引0是针对标签类别狗的,而索引1是针对类别猫的 我使用的代码如下 train_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) test_datagen

我以前是手动创建的,但现在我使用来自目录的flow_来使用我自己的数据训练我的网络。我只有一个问题。当我制作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
)
我想知道的是这对图片和地面真相标签


谢谢

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


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

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

  • 看看你的第一个训练形象是什么,自己看看:是猫还是狗
  • 然后查看培训Y(结果/类别/期望输出),是[0,1]还是[1,0]
这将回答你的问题

对于从生成器中获取一个样本,您可以看到以下问题:


如中所定义,生成器输出是(输入、目标)的元组。

您可以使用class_index属性获取生成器生成的每个类的索引

print(validation_generator.class_indices)

简单…

我想你误解了。如果手动执行此操作,请将图像转换为numpy数组等。这是你说话的方式。如果您只是将目录传递给来自\u目录的流\u,则这是不同的。我的猜测是,您从未使用过\u directory.Hi中的flow\u。谢谢你的回答,但这不是来自目录的流的工作方式。我猜你以前从没用过?!?!或者有一种方法可以从目录生成器的流中获取X和Y值?我明白了。也许有帮助?(更新了答案)。输出了什么?拟合生成器输出一个历史对象。根据文档,来自目录的flow\u不会返回任何内容。它位于keras文档中。传递给“fit_generator”的生成器必须生成具有(输入、目标)的元组。如果没有,你就无法训练它。目录中的Flow_是一种方便的方法,你只需传递目录,它将生成正确的表示形式,让keras抽象你的内部过程,如获取原始像素到numpy数组,生成标签等。我不知道为什么要下推。也许被否决的人能给我解释一下。很酷!在我的例子中,它看起来像是按字母顺序取文件夹名称。这是确定的吗?每次跑步我都会得到同样的订单。如果是字母数字排序,那么在不同的操作系统上排序是否相同?我无法回答,因为我从未玩过keras agang(自2017年起)。@LeonardFeehan有文件证明它们是字母数字排序的,所以我想说你可以相信它是确定性的。