【问题标题】:How to get a list of all the training data from a keras DirectoryIterator?如何从 keras DirectoryIterator 获取所有训练数据的列表?
【发布时间】:2020-03-08 23:33:33
【问题描述】:

我使用了一个 DirectoryIterator 来读取由图像组成的训练集,使用 flow_from_directory 方法。现在我想绘制结果的 ROC 图(显然,最终在测试集上,但目前我还想在训练集上看到 ROC 图)。

作为 Python、Keras 和 Tensorflow 的新手,我在 Google 上搜索了如何绘制 ROC,并找到了这个秘诀:

https://www.tensorflow.org/tutorials/structured_data/imbalanced_data#plot_the_roc

但是,要使用这种方法,我需要获取标签列表(基本事实)和预测。我可以使用 model.predict 获得预测,但为此我显然需要输入数据(即训练集中的图像)。从 DirectoryIterator 获取这些图像的最佳方式是什么?

我想我可以做一些循环,一次从 DirectoryIterator 获取一批。但是,我注意到 DirectoryIterator 包含一个字段labels,它提供了一个标签列表(基本事实),每个训练示例一个。所以我认为应该有一些同样简单的方法来获取所有训练输入(否则,只获取标签有什么意义?)。但我找不到任何领域。那么我在哪里可以找到包含 DirectoryIterator 的所有训练输入的列表(显然按照与标签字段相同的顺序排序)?

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    DirectoryIterator 产生 (x, y) 的元组,其中 x 是一个 numpy 数组,其中包含一批形状为 (batch_size, *target_size, channels) 的图像,y 是一个对应标签的 numpy 数组。 https://keras.io/api/preprocessing/image/#flowfromdirectory-method

    要访问(图像、标签),您可以在该迭代器上使用一些 for 循环来执行此操作。

     for each in DirectoryIterator:
         print(each[0].shape)
         print(each[1].shape)
         break
    

    其中 each[0] 为您提供图像批次,并且 each[1] 为您提供相应的标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 2017-06-22
      • 2022-01-16
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多