问题:

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

原因:

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

安装pytorch卡住了 pytorch下载不下来_数据集


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个文件如下图所示:

安装pytorch卡住了 pytorch下载不下来_pytorch_02


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',
    ]

安装pytorch卡住了 pytorch下载不下来_安装pytorch卡住了_03

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’)

安装pytorch卡住了 pytorch下载不下来_数据集_04


安装pytorch卡住了 pytorch下载不下来_安装pytorch卡住了_05

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

安装pytorch卡住了 pytorch下载不下来_Desktop_06

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

安装pytorch卡住了 pytorch下载不下来_Desktop_07