gpt4 book ai didi

keras - 使用自动编码器的 flow_from_directory 按需加载数据

转载 作者:行者123 更新时间:2023-12-04 01:46:31 25 4
gpt4 key购买 nike

我正尝试在一些图像数据上训练自动编码器。数据集太大了,内存都放不下。所以很明显,我想借助 Keras 中的 flow_from_directory 从目录中按需加载数据。

我的数据集结构如下

./Dataset/
./Train/
../1.jpg
../2.jpg

等等。

我试过像这样使用 flow_from_directory

train_generator = datagen.flow_from_directory(
TRAIN_FOLDER,
target_size = (256, 256),
color_mode = 'rgb',
batch_size = batch_size,
class_mode = 'input')

这给我一个输出 Found 0 images belonging to 0 classes. 如果我尝试用这个生成器拟合模型,我会得到一个 ZeroDivisionError

我曾在各种场合使用过 flow_from_directoryflowflow_from_dataframe,但在那些情况下,我正在解决分类问题并且有n 个类目录中的 n 个文件夹。

如何按需从目录加载图像以训练自动编码器。?来自 Keras 文档 here我看到了

class_mode:“输入”将是与输入图像相同的图像(主要用于自动编码器)

但这也没有解决问题。

我发现的一个解决方法是在列车内创建另一个文件夹并将所有文件移入其中。除了这个还有什么直接的方法吗?

最佳答案

Keras 文档在这里确实不是很精确,而且它实际工作的方式并不直观(至少对我而言)......

在这里,即使您使用的是 class_mode='input',这意味着没有类(或者每张图片都是其自己的类,但是您喜欢这样说),您的图片仍然必须位于子文件夹内

因此,在您的 Train 文件夹中,只需创建另一个子文件夹并将所有图像移入其中。然后输出将是 Found xxx images belonging to 1 classes.

您甚至可以有多个子文件夹,生成的 XY 数据将是相同的,只是控制台输出会不同(并且具有误导性):找到属于 yy 类的 xxx 个图像。如果确实存在类并且您有另一个模型使用它们(使用 class_mode='categorical'class_mode='binary'),这可能很有用。然后这个模型可以从同一个文件夹加载它的数据。

关于keras - 使用自动编码器的 flow_from_directory 按需加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55061877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com