解决pytorch下载mnist等数据集速度过慢、失败问题

问题:

pytorch用torchvision下载数据集时速度极慢,而且大概率下载失败,就很恶心人,心态炸裂,故写本文提出解决此问题的方法。

原因:

下载速度极慢主要原因是pytorch下载数据集的网站如下图所示,属于国外网站,访问受限且极不稳定,解决此问题的最好方法就是自己把mnist等数据集下载到本地,然后把download参数改为False,但此时仍然会报错!原因是没有在./MNIST/processed/目录下生成(.pt)文件。
在这里插入图片描述
torchvision加载mnist数据集的代码如下:

train_dataset = datasets.MNIST(
        root=r'./mnist', #此处为自己定义的下载存在目录
        train=True,
        download=True,
        transform=transform #自定义转换方式
        )

解决方案:

1、mnist数据集下载链接:https://ww.lanzous.com/ibjwnoj

先下载mnist数据集到本地文件夹并解压为4个文件,本文路径为C:\Users\hq\Desktop\gan\dataset\MNIST\raw,得到的4个文件如下图所示:
在这里插入图片描述
2、找到C:\Users\hq\Anaconda3\Lib\site-packages\torchvision\datasets(此处为笔者torchvision的安装路径)路径下的mnist.py文件,将第30行后面几行的urls[ ]内容全部注释掉,换成如下自己的mnist下载存放的路径,再将第154行的remove_finished=True改为False(不改会在代码执行时删除原本的数据集,十分恶心),保存退出。

#urls = [
    #    'http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz',
    #    'http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz',
    #    'http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz',
    #    'http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz',
    #]
	
    urls = [
        'file:///C:\\Users\\hq\\Desktop\\gan\\dataset\\MNIST\\raw\\train-images-idx3-ubyte.gz',
        'file:///C:\\Users\\hq\\Desktop\\gan\\dataset\\MNIST\\raw\\train-labels-idx1-ubyte.gz',
        'file:///C:\\Users\\hq\\Desktop\\gan\\dataset\\MNIST\\raw\\t10k-images-idx3-ubyte.gz',
        'file:///C:\\Users\\hq\\Desktop\\gan\\dataset\\MNIST\\raw\\t10k-labels-idx1-ubyte.gz',
    ]

在这里插入图片描述

3、加载mnist的代码还是如下所示,注意此时download=True,运行代码(此时会报错某某文件不存在,但此步骤一定要进行)。

from torchvision import transforms
from torchvision import datasets

#自定义转换
transform = transforms.Compose([
        transforms.ToTensor(),
    ])
    
train_dataset = datasets.MNIST(
        root=r'./mnist',
        train=True,
        download=True, #一定要设为True,不然会报错
        transform=transform
        )

4、运行代码后,在./mnist(笔者设置的二次download路径)文件夹下会出现
MNIST文件夹,MNIST下会出现processed和raw两个子文件夹,但都是空的空的空的,此时我们返回原先自行下载存在的路径C:\Users\hq\Desktop\gan\dataset\MNIST\raw,发现多了4个 无后缀名的文件把这4个文件剪切到./mnist/MNIST/raw文件中。(未剪切执行第5步时会报错FileNotFoundError: [Errno 2] No such file or directory: ‘./mnist\MNIST\raw\train-images-idx3-ubyte’)在这里插入图片描述
在这里插入图片描述

5、再次运行加载mnist数据集的代码,会在./mnist/MNIST/processed文件下生成两个.pt文件,如图所示,成功!下次运行相同代码就不需要再次下载数据集了。。。
在这里插入图片描述

注:其他数据集的下载要修改C:\Users\hq\Anaconda3\Lib\site-packages\torchvision\datasets文件夹下的其他文件代码,其余步骤一致。
在这里插入图片描述

  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值