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基于 LSTM 的手写数字识别(MNIST)

PyTorch 之 神经网络 Mnist 分类任务

PyTorch基于CNN的手写数字识别(在MNIST数据集上训练)

pytorch学习实战第五篇:卷积神经网络实现MNIST手写数字识别

pyTorch使用mnist数据集实现手写数字识别