Keras flow_from_directory自动编码器训练



我正在尝试在Keras中训练一个自动编码器,我有我自己的数据集组织如下:

  • 数据集:
    • 培训:
      • img1.jpg
    • 有效:
    • 测试:

我已经看到了如何将flow_from_directory用于分类任务,其中数据集被组织在标签和子目录中。在这种情况下,所有图像都在同一个文件夹中,没有任何标签。当我执行代码时,我得到了以下错误:"发现0个图像属于0个类。">

这是我的代码片段:
train_path = 'dataset/train/'
train_gen = train_data_gen.flow_from_directory(
train_path,
class_mode = 'Input',
target_size = IMAGE_SIZE,
color_mode = 'grayscale',
batch_size = BS,
seed = SEED,
shuffle = 'Yes'
)

我该如何修复它?

问题出在数据的结构上。当您使用flow_from_directory目录为train_path = 'dataset/train/'时,它会在该目录中查找子目录,这将是您的类。从您显示的目录结构中,dataset/train中没有类子目录,因此生成器不返回文件和类。例如,假设您正在构建一个分类器来对狗和猫进行分类。在你的训练目录中,你会有两个子目录,一个用来保存猫的图像,另一个用来保存狗的图像。Flow_from_directory有一个参数class_mode,描述如下

class_mode: One of "categorical", "binary", "sparse", "input", or None.
Default: "categorical". Determines the type of label arrays that are
returned: - "categorical" will be 2D one-hot encoded labels, - "binary" 
will be 1D binary labels, "sparse" will be 1D integer labels,
- "input" will be images identical to input images (mainly used to 
work with autoencoders). - If None, no labels are returned 
(the generator will only yield batches of image data, 
which is useful to use with model.predict()). 
Please note that in case of class_mode None,
the data still needs to reside in a subdirectory of directory for it to work correctly.

所以在flow_from_directory设置class_mode='input'。这样你就可以得到没有任何标签的图像。

我解决了问题;解决方案可能对某些人有用:我添加了一个子文件夹,其中存储所有图像。所以数据集的结构是这样的:

数据集:

  • 培训:
    • 图片:
      • img.jpg…

train_path = 'dataset/train/'

正如@Gerry p建议的,我设置class_mode=None

相关内容

  • 没有找到相关文章