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

为何tf.keras.preprocessing.image_dataset_from_directory未读取目录全部PNG图像

接口未扫描全部图像的核心原因

tf.keras.preprocessing.image_dataset_from_directory有固定的目录扫描规则,和你当前的目录结构完全不匹配:

  • 该接口设计上面向分类任务,要求传入的根路径下必须存在至少一个一级子目录:它会把所有一级子目录识别为分类的类别,仅扫描这些子目录内部的图像文件,不会扫描根路径下的零散散文件。
  • 你将12140张PNG直接存放在PATH根目录、没有任何一级子目录存放的情况下,接口的枚举逻辑出现了异常:它错误地将PATH下的零散系统文件、隐藏文件或极小的隐藏子目录内的文件识别为有效图像,最终仅统计到37个文件。你看到的“30个训练样本”,是接口基于这错误统计到的37个文件做的validation_split分割结果,和你实际的12140张图像无关联。
  • 次要可能原因:若你使用Linux/macOS系统,接口默认对扩展名大小写敏感,部分后缀为大写.PNG的文件会被直接跳过。但你的glob已经统计到12140个小写后缀的PNG,该场景发生率较低。
适配自编码器训练场景的解决办法

你不需要标签来训练卷积自编码器,有两种可直接落地的方案:

  • 方案1:适配接口设计要求:在PATH下新建一个空子目录(例如命名为unsupervised),将所有12140张PNG移动到该子目录内。此时接口会自动将unsupervised识别为唯一类别,即可扫描到全部图像。
  • 方案2:使用原生无标签加载逻辑:直接绕过这个面向分类任务的接口,用tf.data.Dataset.list_files匹配PATH下所有PNG路径,再自行编写图像加载、归一化的预处理逻辑,更适配自编码器的无标签训练需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 12:57:01