Keras flow_from_directory() 只能从选定的子目录中读取

Sup*_*dar 6 deep-learning conv-neural-network keras tensorflow

我有一个目录结构如下。

train
|- dog --> contains image files of dogs
|- cat --> contains image files of cats
|- elephant --> contains image files of elephants
Run Code Online (Sandbox Code Playgroud)

我想训练一个 CNN 来识别动物,但仅限于猫和狗,而不是大象。

我想使用keras ImageDataGenerator类来增加数据和flow_from_directory()方法来读取图像文件。

train_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(directory='train', class_mode='categorical', target_size=(64,64), batch_size=16, shuffle=True)
Run Code Online (Sandbox Code Playgroud)

上面的代码将从'train'的所有子目录中读取数据,这是我不想要的。一种选择是创建一个新目录并复制“dog”和“cat”子目录以及其中的文件。但是有没有办法从flow_from_directory()方法本身控制它?

gor*_*jan 13

假设我以正确的方式理解了您的问题,这应该可以帮助您:

train_generator = train_datagen.flow_from_directory(directory='train', class_mode='categorical', target_size=(64,64), batch_size=16, shuffle=True, classes=["dog", "cat"])
Run Code Online (Sandbox Code Playgroud)

这将仅读取目录中的图像,dogcat忽略elephant目录并为它们提供不同的分类标签。