机制解决torchvision下载国外数据集mnist没有进度条的解决方案
我试着使用torchvison下载mnist数据集,但是由于是外国的站点,相信不只是mnist数据集,其他的数据集也可能遇到下载不了或者下载速度很慢的情况。cifar10/100也可以按照这样的方法进行下载
但是呢,很多人已经从外国的网站下载过了,你再下载它们共享的资源就可以下载成功,接下来你可以手工的把下载好的数据集放到恰当的位置。你可能以为是万事大吉了,但是它会报错:
RuntimeError: Dataset not found. You can use download=True to download it
这是为什么呢?我们取看他的源代码(按住ctrl,然后点击相应的函数)如下图:
就可以看到源代码了,代码中还要对数据进行进一步处理,你的下载的文件不是它直接拿来用的,最后要处理成.pt文件,所以直接把数据集放在指定文件夹是不可行的。你可能想到把数据进行处理的代码拿出来,然后处理我们已经下载好的数据就可以了,我也这样尝试了,但是也会assertion报错,我就没有继续进行,而是采用了下面的简便的方案。
首先问题的根本原因就在于从外国网站下载数据很慢,这个时候。那么你可以把自己电脑上已经下载好的数据集的文件路径放到浏览器的窗口,然后转到这个地址,就可以得到如下:
然后把源代码中的网址替换成本地的文件地址就可以了,如下所示:
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:///E:/programing/python/StudyPytorch/StudyPytorch/mnist/train-images-idx3-ubyte.gz', 'file:///E:/programing/python/StudyPytorch/StudyPytorch/mnist/train-labels-idx1-ubyte.gz', 'file:///E:/programing/python/StudyPytorch/StudyPytorch/mnist/t10k-images-idx3-ubyte.gz', 'file:///E:/programing/python/StudyPytorch/StudyPytorch/mnist/t10k-labels-idx1-ubyte.gz', ]
下面是正常运行的结果(路径和前面不一样不要大惊小怪,因为我又用其他路径做了一次):