WSL Ubuntu环境加载Pytorch内置FashionMNIST数据集报AttributeError求助
解决torchvision.datasets加载FashionMNIST时的AttributeError: __enter__问题
可能的原因及对应方案
1. 修复版本兼容性问题
AttributeError: __enter__ 大多源于torch与torchvision版本不匹配,旧版torchvision的下载上下文管理器存在bug。
- 先查看当前版本:
pip list | grep torch - 升级到兼容的稳定版本(根据你的CUDA版本替换
cu118,比如CUDA 12.1用cu121):pip install --upgrade torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
2. 手动下载后跳过自动下载流程
既然你能通过wget手动获取数据集,可直接让torchvision加载本地文件:
- 下载所需的四个数据集文件:
wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz - 创建路径
data/FashionMNIST/raw/,将下载的文件放入其中 - 修改代码,关闭自动下载并补全缺失的导入:
from torchvision import datasets from torchvision.transforms import ToTensor # 你的原始代码未导入ToTensor,这是隐性问题点 train_data = datasets.FashionMNIST( root='data', train=True, download=False, transform=ToTensor(), target_transform=None ) test_data = datasets.FashionMNIST( root='data', train=False, download=False, transform=ToTensor(), target_transform=None )
3. 修复WSL文件系统权限
WSL中文件夹权限异常会导致torchvision无法正常读写下载文件:
- 给数据文件夹赋予足够权限:
sudo chmod -R 755 data/ - 或重建文件夹:
rm -rf data mkdir data
4. 临时禁用CUDA测试环境冲突
极少数情况下,CUDA配置会干扰下载流程,可临时禁用CUDA验证:
- 在代码开头添加:
import os os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
如果此时能正常下载,说明是CUDA环境配置冲突,需重新安装适配WSL的CUDA toolkit与PyTorch。
内容的提问来源于stack exchange,提问作者Senura Hansaja
相关产品推荐
相关产品推荐

