使用Food101数据集报错:请求的split‘validation’不存在
解决Food101数据集TFDS加载时Split不存在的问题
问题根源
TFDS官方定义的Food101数据集split为train和validation,但你本地下载的数据集文件夹是train和test,两者的split命名不匹配,导致TFDS无法识别你指定的split;同时你本地数据集的meta信息里可能没有注册test这个split,所以改split为test也会报错。参考代码能正常运行是因为它使用的是TFDS自动下载的标准结构数据集,split命名完全符合官方定义。
解决方案
方案1:重新下载标准数据集(最省心)
- 删除本地已有的Food101数据集文件夹(默认路径为
~/tensorflow_datasets/food101/,根据你的实际存储路径调整) - 重新运行你原本的代码,TFDS会自动下载包含
train和validationsplit的标准数据集,无需额外修改
方案2:修改本地数据集适配TFDS规范
- 找到本地Food101的存储目录,将
test相关的文件夹、文件重命名为validation - 打开数据集的meta配置文件(如
dataset_info.json),将其中所有提及test的字段替换为validation,确保split名称和TFDS的预期一致
方案3:手动加载本地数据集(无需修改文件)
如果不想改动本地文件,可以绕过TFDS的split检查,直接用tf.data手动加载图片和标签:
import tensorflow as tf import os # 定义本地数据集路径 train_dir = "/path/to/your/local/food101/train" test_dir = "/path/to/your/local/food101/test" # 加载训练集 train_data = tf.keras.utils.image_dataset_from_directory( train_dir, image_size=(224, 224), # 根据你的模型需求调整尺寸 batch_size=32, label_mode="categorical" ) # 加载测试集 test_data = tf.keras.utils.image_dataset_from_directory( test_dir, image_size=(224, 224), batch_size=32, label_mode="categorical" )
内容的提问来源于stack exchange,提问作者DarkestDay
相关产品推荐
相关产品推荐

