PyTorch 时尚-MNIST (ETL)
Posted
技术标签:
【中文标题】PyTorch 时尚-MNIST (ETL)【英文标题】:PyTorch Fashion-MNIST (ETL) 【发布时间】:2019-08-01 07:02:51 【问题描述】:我是深度学习和 PyTorch 的新手,所以如果有些问题看起来很愚蠢或者我的提问格式不正确,请多多包涵。 作为深度学习 PyTorch 系列的一部分,我正在观看此视频:https://www.youtube.com/watch?v=8n-TGaBZnk4。该视频专门关于 ETL(使用 Fashion-MNIST 数据集)。 我对 7:05 的视频有几个问题。
问题 1:在 Fashion-MNIST 子类构造函数中,我们将参数传递给它:
‘root’
,其中导师提到:这是磁盘中数据所在的位置。抱歉,也许这是一个愚蠢的问题,但这是数据位于源服务器(来自 URL)磁盘上的位置,还是您要将数据保存在本地计算机上的路径位置?
问题 2:对于 Fashion-MNIST 来说,'root'
总是相同的位置路径:即'./data/FashionMNIST'
?
问题3:如果'root'
定义了数据在源服务器上的位置路径,那么它会在哪里下载到本地呢?我检查了我的 'download'
文件夹(我使用的是 Windows 7 笔记本电脑),但在那里找不到文件?
问题 4:视频中提到我们应该在后续调用中检查数据是否已经下载(即在我们传递 download=true
的参数中)。
4(a):有什么好的方法可以做到这一点?我们是否放置了if
声明来检查这一点?还是有更聪明的方法来检查下载的数据?
4(b): 另外"subsequent calls"
是什么意思?这是否意味着我们需要再次调用'FashionMNIST'
构造函数来下载test_data?
问题 5:最后,我尝试在 Spyder IDE(Python 3.5)上运行以下代码(视频中的代码):
import torch
import torchvision
import torchvision.transforms as transforms
train_set = torchvision.datasets.FashionMNIST(
root='./data/FashionMNIST'
,train=True
,download=True
,transform=transforms.Compose([
transforms.ToTensor()
])
)
我得到了输出:
Traceback (most recent call last):
File "<ipython-input-3-3ac000b9e90a>", line 10, in <module>
transforms.ToTensor()
File "C:\Program Files\Anaconda3\lib\site-packages\torchvision\datasets\mnist.py", line 68, in __init__
self.download()
File "C:\Program Files\Anaconda3\lib\site-packages\torchvision\datasets\mnist.py", line 136, in download
makedir_exist_ok(self.raw_folder)
File "C:\Program Files\Anaconda3\lib\site-packages\torchvision\datasets\utils.py", line 41, in makedir_exist_ok
os.makedirs(dirpath)
File "C:\Program Files\Anaconda3\lib\os.py", line 241, in makedirs
mkdir(name, mode)
FileNotFoundError: [WinError 206] The filename or extension is too long: './data/FashionMNIST\\FashionMNIST\\raw'
不知道为什么我最后得到了那个错误。此外,根据视频,我在 Jupyter Notebook 上运行了代码,并且运行良好。但我想知道为什么它会在 Spyder IDE 中引发该错误。
非常感谢。
【问题讨论】:
【参考方案1】:没有真正的问题是愚蠢的问题,一个接一个地回答问题:
答案 1 和 2:
root
是你本地磁盘上保存数据的路径,你可以根据自己的喜好给任意路径,不会有问题的。
答案 3: url 等是在文件中定义的,数据的路径就是您需要做的所有事情:为了查看下载数据的 url here is a link。
Ans 4. : download = True
只是给它下载权限,如果数据不存在下载器会自动检查数据是否已经存在,如果存在它仍然不会下载,即使下载设置为没错,它再次发生在后台,您不必担心。
Ans5 : 这个问题不是一个 Torch 问题,它更多地与它在 Windows 中的编译方式有关,这个问题在here 和here 进行了详细讨论
【讨论】:
非常感谢您的回答。所以对于答案 1,如果 root 是数据保存在本地计算机中的位置,那么路径'./data/FashionMNIST'
将保存在 Windows 7(64 位)中的哪里? IE。目录路径是什么(例如,在桌面、我的文档...等中)?对于答案3,我认为有一个轻微的误解。所以我的问题是,数据将保存在哪里,而不是我们从哪里获取数据。因此,这与我在回答您的答案 1 后提出的问题几乎相同。
对于答案 5,这是有道理的。所以这是因为保存文件的路径(包括文件名)太长,无法保存在 Windows 文件系统规则中。但是为什么这在 Jupyter Notebook 中起作用? Jupyter 是否在 Windows 操作系统上也不会在本地保存 .py
文件?还是因为 Jupyter 实际上是在虚拟机或浏览器上编译程序,而不是直接在 Windows 操作系统上编译?
@Hazzaldo 在 Linux 中 ./data/
表示您正在创建一个执行文件的目录,因此例如,如果您在 Documents 中有 .ipynb 文件,它将在 Documents 本身中创建一个目录数据。在 Windows 中,你也可以在最上面看到路径 localhost:8888/Documents /
很好,即使我尝试使用更长的路径指向我想要的实际文件夹:r'C:\Users\username\Desktop\Machine Learning A-Z course\PyTorch\data'
。顺便感谢一开始的r
,这为我节省了时间来研究为什么由于Unicode而发生错误。很遗憾,它似乎不适用于 '.\data\FMNIST\'
。因为这样它使代码更便携,不必每次都更改路径(并且.\data
将在您的源 python 文件存储的任何位置创建)。我猜Windows有时只是不方便编码。非常感谢您的帮助。
这个帖子真的很有帮助。我有同样的问题。在 Mac 中,我从 '/data/miniimagenet' 更改为完整路径。以上是关于PyTorch 时尚-MNIST (ETL)的主要内容,如果未能解决你的问题,请参考以下文章
使用使用时尚 mnist 数据集训练的模型从谷歌图像(包)中预测图像的类别
PyTorch基于CNN的手写数字识别(在MNIST数据集上训练)