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

使用Keras的image_dataset_from_directory时如何完全忽略标签?

解决Keras加载无标签图像时出现额外维度的问题

当用keras.utils.image_dataset_from_directory加载无标签图像做无监督任务时,设置labels=None后,正常生成的数据集形状应为(batch_size, image_height, image_width, n_channels),不会出现额外的None维度。你遇到的情况大概率是数据预处理环节引入了额外维度,或参数设置有疏漏,以下是排查和解决方法:

  • 确认labels=None的作用:
    显式设置labels=None后,函数会直接返回图像张量,不会附加标签相关维度。可以先去掉后续的map、batch操作,单独打印原始数据集的元素形状验证:

    raw_dataset = keras.utils.image_dataset_from_directory(
        data_dir,
        labels=None,
        validation_split=validation_split,
        subset="training",
        shuffle=False,
        image_size=(image_size, image_size)
    )
    for img in raw_dataset.take(1):
        print(img.shape)  # 正常输出应为 (32, H, W, C) 这类,无额外维度
    
  • 排查preprocess_image函数:
    额外的None维度几乎都是预处理函数导致的。比如错误使用tf.expand_dims添加维度,或返回了多元素元组,都会改变张量形状。确保预处理函数接收单个图像张量,处理后返回单个张量:

    def preprocess_image(img):
        # 示例:仅做归一化,不添加额外维度
        img = tf.cast(img, tf.float32) / 255.0
        return img
    
  • 调整完整代码流程:
    确认预处理函数无误后,重新构建数据集,此时形状应符合预期:

    data_dir = pathlib.Path(path_to_image)
    
    train_dataset = (keras.utils.image_dataset_from_directory(
                        data_dir,
                        labels=None,
                        validation_split=validation_split,
                        subset="training",
                        shuffle=False,
                        image_size=(image_size, image_size)
                    )
                    .map(preprocess_image, num_parallel_calls=tf.data.AUTOTUNE)
                    .cache()
                    .batch(batch_size, drop_remainder=True)
                    .prefetch(buffer_size=tf.data.AUTOTUNE))
    
    # 验证最终形状
    for batch in train_dataset.take(1):
        print(batch.shape)  # 输出 (batch_size, H, W, C)
    

另外需确认数据集目录结构:当labels=None时,函数会遍历data_dir下所有图像文件(包括子文件夹内的),无需按分类创建子文件夹,避免因目录结构触发不必要的维度生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:30:39