使用3个X光图像文件夹创建训练测试集时fastai报数据集为空错误
报错解决方案
核心错误原因
你的代码存在明显的变量名笔误:你定义的数据集根路径变量为path,但调用ImageDataBunch.from_folder时第一个参数传入了未定义的dta,导致fastai无法定位到数据集目录,识别训练集、验证集为空,触发后续报错。
第一步:修正代码笔误
修改后的可运行基础代码如下:
import os from fastai.vision import * import numpy as np path = Path('/content/drive/MyDrive/X-Ray_Image_DataSet') # 可选:先打印路径下的文件列表,确认目录结构正确 print("根目录下的文件/文件夹:", os.listdir(path)) np.random.seed(41) # 把第一个参数从dta改为正确的路径变量path data = ImageDataBunch.from_folder(path, train="Train", valid ="Valid", ds_tfms=get_transforms(),size=(256,256), bs=32, num_workers=4).normalize()
其他排查点(修正笔误后仍报错可依次检查)
- 确认数据集目录结构符合
from_folder方法的要求:
根目录/content/drive/MyDrive/X-Ray_Image_DataSet下必须存在Train和Valid两个子文件夹,两个子文件夹下需要再按类别建立二级子文件夹,对应类别的X光图像存放在对应类别的二级子文件夹中,参考结构:X-Ray_Image_DataSet/ ├─ Train/ │ ├─ 类别A/ │ │ ├─ 1.png │ │ └─ ... │ └─ 类别B/ │ ├─ 2.png │ └─ ... └─ Valid/ ├─ 类别A/ │ ├─ 3.png │ └─ ... └─ 类别B/ ├─ 4.png └─ ... - 确认谷歌云盘已成功挂载到Colab运行环境,路径没有拼写错误,
Train和Valid文件夹下存在至少1张可正常读取的X光图像。 - 如果你不想手动拆分训练、验证集,希望fastai自动从所有图像中拆分出验证集,可以调整调用参数,去掉
train和valid的指定,传入valid_pct设置验证集占比即可,示例:data = ImageDataBunch.from_folder(path, valid_pct=0.2, ds_tfms=get_transforms(),size=(256,256), bs=32, num_workers=4).normalize() - 确认所有图像为fastai支持的格式(png、jpg、jpeg等),没有损坏文件、隐藏文件或后缀名异常的文件存放在图像目录中。
内容的提问来源于stack exchange,提问作者JAY SURANA_183115
相关产品推荐
相关产品推荐

