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

Keras图像分类代码报错:存在.jpeg图片却提示未找到

问题:Keras image_dataset_from_directory无法识别文件夹中的.jpeg图片

问题详情

文件夹中确实存在.jpeg格式图片,但运行Keras代码加载数据集时,系统提示未找到任何图片,且报错信息明确说明允许的格式包含.jpeg。

运行代码

image_size = (180,180)
batch_size =1

train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    'both_new',  # 注:原代码中写的是'foldername',实际运行时使用的是'both_new'
    validation_split=0.9,
    subset= 'training',
    seed = 20,
    image_size = image_size,
    batch_size= batch_size,
)
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
    'both_new',
    validation_split=0.9,
    subset = 'validation',
    seed = 20,
    image_size = image_size,
    batch_size = batch_size,
)

运行结果与报错

运行结果

Found 0 files belonging to 0 classes.
Using 0 files for training

报错信息

ValueError                                Traceback (most recent call last)
Input In [4], in <cell line: 4>()
      1 image_size = (180,180)
      2 batch_size =1
----> 4 train_ds = tf.keras.preprocessing.image_dataset_from_directory(
      5     'both_new',
      6     validation_split=0.9,
      7     subset= 'training',
      8     seed = 20,
      9     image_size = image_size,
     10     batch_size= batch_size,
     11 )
     12 val_ds = tf.keras.preprocessing.image_dataset_from_directory(
     13     'both_new',
     14     validation_split=0.9,
   (...)
     18     batch_size = batch_size,
     19 )

File ~\anaconda3\lib\site-packages\keras\utils\image_dataset.py:209, in image_dataset_from_directory(directory, labels, label_mode, class_names, color_mode, batch_size, image_size, shuffle, seed, validation_split, subset, interpolation, follow_links, crop_to_aspect_ratio, **kwargs)
    206 image_paths, labels = dataset_utils.get_training_or_validation_split(
    207     image_paths, labels, validation_split, subset)
    208 if not image_paths:
--> 209   raise ValueError(f'No images found in directory {directory}. '
    210                    f'Allowed formats: {ALLOWLIST_FORMATS}')
    212 dataset = paths_and_labels_to_dataset(
    213     image_paths=image_paths,
    214     image_size=image_size,
   (...)
    219     interpolation=interpolation,
    220     crop_to_aspect_ratio=crop_to_aspect_ratio)
    221 dataset = dataset.prefetch(tf.data.AUTOTUNE)

ValueError: No images found in directory both_new. Allowed formats: ('.bmp', '.gif', '.jpeg', '.jpg', '.png')

原因分析与解决方法

1. 目录结构不符合要求

image_dataset_from_directory的核心要求是:目标目录下必须包含以类别命名的子文件夹,所有图片需放在对应类别的子文件夹中,不能直接把图片放在目标目录根目录。

  • 正确目录结构示例:
    both_new/
        cat/
            cat1.jpeg
            cat2.jpeg
        dog/
            dog1.jpeg
    
  • 解决:创建类别子文件夹,将对应图片移动到子文件夹内。

2. 路径错误

代码中使用的'both_new'是相对路径,需确保该文件夹位于代码运行的当前工作目录下。

  • 排查:运行import os; print(os.getcwd())查看当前工作目录,确认both_new是否在该目录下。
  • 解决:要么将both_new移动到当前工作目录,要么改用绝对路径(如'C:/Users/YourName/Documents/both_new')。

3. 文件后缀或文件本身问题

  • 可能是文件真实后缀被隐藏(如Windows默认隐藏已知文件类型扩展名,实际文件是xxx.jpeg.txt);
  • 可能是后缀为大写(.JPEG),虽然理论上兼容,但部分环境下会识别失败;
  • 可能文件损坏或文件名包含特殊字符/空格。
  • 解决:显示文件真实后缀,修改为小写.jpeg,确保文件名正常,且图片能正常打开。

4. 验证集比例设置不合理

代码中validation_split=0.9意味着训练集仅占总数据的10%,若总图片数极少(如1张),训练集可能分到0张,但这不是本次报错的核心原因(本次报错是未找到任何图片)。建议调整为合理比例,如validation_split=0.2。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:06:23