You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras flow_from_directory加载单文件夹图片报错:未找到图像与类别

问题根源

flow_from_directory的默认逻辑是要求目标目录下必须存在子文件夹作为类别划分,它会把子文件夹名当作类别,然后统计子文件夹里的图像数量。你直接读取仅含图像的训练文件夹时,找不到符合要求的类别子目录,就会报“Found 0 images belonging to 0 classes”的错误。

解决方法

针对自编码器的训练需求(不需要分类标签,输入即标签),有两种实用方案:

方案1:调整目录结构(最简单)

给训练、验证文件夹各加一个子文件夹(比如命名为normal),把所有图像移到这个子文件夹里,让目录结构变成:

train/
└── normal/
    ├── img1.jpg
    ├── img2.jpg
    └── ...
validation/
└── normal/
    ├── imgA.jpg
    ├── imgB.jpg
    └── ...

然后修改生成器代码,指定class_mode='input'(自编码器训练时,输入数据就是标签数据):

from tensorflow.keras.preprocessing.image import ImageDataGenerator

img_height, img_width = 256, 256
batch_size = 32

train_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
    'path/to/train',
    target_size=(img_height, img_width),
    batch_size=batch_size,
    class_mode='input'  # 关键:输入即标签
)

val_datagen = ImageDataGenerator(rescale=1./255)
val_generator = val_datagen.flow_from_directory(
    'path/to/validation',
    target_size=(img_height, img_width),
    batch_size=batch_size,
    class_mode='input'
)

方案2:用flow_from_dataframe绕过目录结构限制

如果不想改目录结构,可以用flow_from_dataframe,先把图像路径整理成DataFrame,再生成训练数据:

import pandas as pd
import os
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# 整理训练集图像路径
train_dir = 'path/to/train'
train_files = [f for f in os.listdir(train_dir) if f.endswith(('.png', '.jpg', '.jpeg'))]
train_df = pd.DataFrame({
    'filename': [os.path.join(train_dir, f) for f in train_files],
    'label': [os.path.join(train_dir, f) for f in train_files]  # 自编码器标签等于输入
})

# 生成训练生成器
train_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_dataframe(
    dataframe=train_df,
    x_col='filename',
    y_col='label',
    target_size=(256, 256),
    batch_size=32,
    class_mode='input',
    validate_filenames=False
)

# 验证集同理复制上述逻辑即可

内容的提问来源于stack exchange,提问作者user22108863

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:48:08