如何使用 keras flow_from_directory shuffled 方法检索图像的文件名?

Posted

技术标签:

【中文标题】如何使用 keras flow_from_directory shuffled 方法检索图像的文件名?【英文标题】:How to retrieve the filename of an image with keras flow_from_directory shuffled method? 【发布时间】:2017-06-26 09:49:03 【问题描述】:

如果我不打乱我的文件,我可以使用generator.filenames 获取文件名。但是当生成器打乱图像时,文件名没有打乱,所以我不知道如何取回文件名。

【问题讨论】:

无论是否使用 shuffle 都能以与生成器相同的顺序获取文件名将非常有用。训练后,我喜欢通过查看存在误报、真阳性等的图像来尝试了解我的模型“看到”了什么。为此使用训练生成器中的文件名会更简单、更便宜,但是现在我能想到的唯一方法是创建一个单独的“评估”生成器,它有 shuffle=False。 【参考方案1】:

我认为这里唯一的选择是不打乱文件。我自己一直在想这个,这是我在文档中唯一能找到的。看起来很奇怪而且不正确...

【讨论】:

【参考方案2】:

在内部,DirectoryIterator 将遍历 index_arrray,当您要求它时,它会被打乱。

您只需要使用批处理的当前索引来索引文件名数组:

it = ImageDataGenerator().flow_from_directory(shuffle=True,...)
for img in it:
    idx = (it.batch_index - 1) * it.batch_size
    fnames = [it.filenames[it.index_array[i]] for i in range(idx, idx + it.batch_size)]

【讨论】:

以上是关于如何使用 keras flow_from_directory shuffled 方法检索图像的文件名?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Keras 的 Tensorboard 回调?

keras 入门整理 如何shuffle,如何使用fit_generator

如何使用 Tensorflow 张量设置 Keras 层的输入?

如何有效地使用 Keras 与后端无关

如何减少 Tensorflow/Keras 使用的 CPU 数量?

如何将 tf.keras 与 bfloat16 一起使用