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

如何用单文件夹与标签文件创建TensorFlow验证数据集?

解决ImageNet验证集加载时类别识别错误的问题

问题排查步骤

  1. 验证标签加载是否正确
    先确认加载的val_labels是否包含1000个不同类别,运行以下代码:

    print("标签唯一值数量:", len(set(val_labels)))
    
    • 若输出不是1000,说明val.txt格式或路径存在问题:
      • 检查val.txt是否每行仅含一个整数类别编号,无多余空格、空行或注释;
      • 确认path_val_labels指向的是正确的验证集标签文件,而非其他文件。
  2. 确认图片与标签的顺序匹配
    image_dataset_from_directory默认按文件名的字母数字顺序加载图片,需确保val_labels的顺序与图片顺序完全对应(第N个标签对应第N个加载的图片)。运行以下代码验证:

    import os
    from pathlib import Path
    
    val_image_paths = sorted([str(path) for path in Path(path_val).glob('*.jpg')])
    # 打印前5张图片文件名和对应标签
    print("前5张图片:", [os.path.basename(p) for p in val_image_paths[:5]])
    print("对应标签:", val_labels[:5])
    
    • 若文件名顺序与标签不匹配,需调整val_labels的排序,使其与图片文件名的字母数字顺序一致。
  3. 核对图片与标签的数量一致性
    确保图片数量和标签数量完全相等:

    print("图片总数:", len(val_image_paths))
    print("标签总数:", len(val_labels))
    
    • 若数量不等,检查验证集文件夹是否包含非图片文件,或val.txt的行数是否正确。

替代解决方案:手动构建数据集

若上述排查后仍无法解决问题,可绕过image_dataset_from_directory,手动构建验证集数据集,灵活性更高:

import tensorflow as tf
import numpy as np
from pathlib import Path

path_val = './ILSVRC/Data/val/'
path_val_labels = './ILSVRC/Data/val.txt'

# 获取排序后的图片路径和标签
val_image_paths = sorted([str(path) for path in Path(path_val).glob('*.jpg')])
val_labels = list(np.loadtxt(path_val_labels).astype(int))

# 定义图片加载函数
def load_and_preprocess_image(path, label):
    # 读取图片
    img = tf.io.read_file(path)
    # 解码为JPEG格式
    img = tf.image.decode_jpeg(img, channels=3)
    # 调整图片尺寸
    img = tf.image.resize(img, (224, 224), interpolation='bilinear')
    # 根据模型需求添加预处理(例如归一化)
    # img = img / 255.0
    return img, label

# 构建数据集
val_dataset_224 = tf.data.Dataset.from_tensor_slices((val_image_paths, val_labels))
# 并行加载图片
val_dataset_224 = val_dataset_224.map(load_and_preprocess_image, num_parallel_calls=tf.data.AUTOTUNE)
# 打乱、分批、预取
val_dataset_224 = val_dataset_224.shuffle(buffer_size=5000).batch(32).prefetch(tf.data.AUTOTUNE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:50:28