利用pytorch的datasets在本地读取MNIST数据集

1、问题描述

想利用datasets.MNIST直接加载数据集,但是!太慢了!开了VPN从外网下载依然慢!我就从别的地方下载了MNIST数据集到本地,打算直接加载使用。原始代码如下:

transform = transforms.Compose([
    transforms.ToTensor(),  # 转变为1×28×28的tensor
    transforms.Normalize((0.1307,), (0.3081,))  # 控制像素值在[0,1]
])
batch_size = 64
train_dataset = datasets.MNIST(root='E:/datasets_download/dataset/mnist/',
                               train=True, download=True,
                               transform=transform
)
train_loader = DataLoader(train_dataset,
                          batch_size=batch_size,
                          shuffle=True)
test_dataset = datasets.MNIST(root='E:/datasets_download/dataset/mnist/',
                              train=False,
                              download=True,
                              transform=transform
                              )
test_loader = DataLoader(test_dataset,
                         batch_size=batch_size,
                         shuffle=True
                         )

但直接像下面那样把参数改为download=False是不可行的

datasets.MNIST(root='E:/datasets_download/dataset/mnist/',
                               train=True, download=True,
                               transform=transform
)

因为在mnist.py文件中的MNIST类的下载链接还是外网,那我把链接直接改成我的本地不就行了?按照这个博主的链接操作我失败了,报了一堆错误,最后也没解决我自己的问题。(可能每个人的情况不一样吧)
在这里插入图片描述

2、解决办法

运行程序下载失败后,在我的路径下产生了MNIST文件夹,里面包含processed和raw文件夹,raw文件夹里有下载失败但已经存在的文件。如下:
在这里插入图片描述
将原来下载失败的文件删除,再把已经下载好的四个文件移到这个raw文件夹下,在运行程序就会自动扫描大约2min,数据集就加载成功了。
在这里插入图片描述

3、原理解释

当第一次运行下载失败后,文件会被储存下来而不会消失。所以在下一次运行程序进行下载时,已经下载过的部分不会再次下载而被覆盖,而是对已经下载的部分进行扫描,判断接下来应该下载哪一部分。

利用这个原理,我把已经下载好的MNIST数据集替代他未下载完成的部分,让她“误以为”这是之前下载好的,从而只进行扫描不再进行下载。

以上纯属个人理解,希望对各位有所帮助╰( ̄▽ ̄)╭。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值