Keras 使用自动编码器的\u目录中的流\u按需加载数据

Keras 使用自动编码器的\u目录中的流\u按需加载数据,keras,deep-learning,Keras,Deep Learning,我正在尝试训练一些图像数据的自动编码器。数据集太大,无法放入内存。显然,我想在Keras中的flow\u from\u directory的帮助下,根据需要从目录加载数据 我的数据集的结构如下 /Dataset/ /列车/ ../1.jpg ../2.jpg 等等 我试着像这样使用flow\u from\u directory train\u generator=来自\u目录的datagen.flow\u( TRAIN_文件夹, 目标_大小=(256,256), 颜色模式='rgb', 批次大

我正在尝试训练一些图像数据的自动编码器。数据集太大,无法放入内存。显然,我想在Keras中的
flow\u from\u directory
的帮助下,根据需要从目录加载数据

我的数据集的结构如下

/Dataset/
/列车/
../1.jpg
../2.jpg
等等

我试着像这样使用
flow\u from\u directory

train\u generator=来自\u目录的datagen.flow\u(
TRAIN_文件夹,
目标_大小=(256,256),
颜色模式='rgb',
批次大小=批次大小,
class_模式=‘输入’)
这为我提供了一个输出
找到了属于0个类的0个图像。
如果我尝试使用此生成器拟合模型,我将得到一个
ZeroDivisionError

我曾在各种场合使用过来自_目录、
flow
和来自_数据帧的
flow _,但在这些情况下,我遇到了一个分类问题,目录中有n个文件夹用于n个类

如何按需从目录加载图像以进行自动编码器培训。?从我看到的Keras文档中

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

但这也不能解决问题


我发现的一个解决方法是在火车内制作另一个文件夹,并将所有文件移动到该文件夹中。除此之外还有什么直接的方法吗?

Keras文档在这里确实不是很精确,它的实际工作方式也不是直观的(至少对我来说)

在这里,即使您使用的是
class\u mode='input'
,这意味着没有类(或者每个图片都是它自己的类,不管您如何表达它),您的图像仍然必须位于子文件夹中

因此,在您的
Train
文件夹中,只需创建另一个子文件夹并将所有图像移到其中即可。然后输出将
找到属于1个类的xxx个图像。

您甚至可以有多个子文件夹,生成的
X
Y
数据将是相同的,只是控制台输出将不同(并且会产生误导):
找到了属于yy类的xxx个图像。

如果确实存在类,并且您有另一个模型在使用它们(使用
class\u mode='classifical'
class\u mode='binary'
)。然后这个模型可以从同一个文件夹加载数据。

我也这样做了。在
TRAIN
内部创建名为
TRAIN
的文件夹,即
TRAIN//TRAIN
,并将
TRAIN///code>中的图像文件移动到
TRAIN//TRAIN
。然后它似乎起作用了。我在想,还有其他方法可以告诉
flow\u目录
不需要查找子目录folders@SreeramTP哦,该死,我完全错过了你的最后一段。很抱歉所以,不,我现在经常面对这个问题,我不知道有什么“直接”的方法。你的回答将对其他面对这个问题并正在寻找快速解决方案的人有所帮助