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

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加载本地文件:

  1. 下载所需的四个数据集文件:
    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
    
  2. 创建路径data/FashionMNIST/raw/,将下载的文件放入其中
  3. 修改代码,关闭自动下载并补全缺失的导入:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:09:58