PyTorch Fashion-MNIST (ETL) - PullRequest
       28

PyTorch Fashion-MNIST (ETL)

1 голос
/ 11 марта 2019

Я новичок в Deep Learning и PyTorch, поэтому, пожалуйста, миритесь со мной, если некоторые вопросы кажутся глупыми, или я задаю не в правильном формате. Я смотрел это видео как часть серии PyTorch по Deep Learning: 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 (а): Какой хороший подход для этого? Мы ставим оператор 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, согласно видео, и он работал нормально. Но мне интересно, почему он выдает эту ошибку в Spyder IDE.

Заранее большое спасибо.

1 Ответ

1 голос
/ 11 марта 2019

Никакой подлинный вопрос не является глупым вопросом, отвечая на вопросы один за другим:

Ответы 1 и 2:

root - это путь на вашем локальном диске, где будут сохраняться данные, вы можете указать любой путь в соответствии с вашими предпочтениями, он не вызовет проблем.

Ответ 3: URL-адреса и т. д. определены в файлах, и путь к данным - это все, что вам нужно сделать: для того, чтобыпосмотрите на URL, откуда загружаются данные вот ссылка .

Ответ 4.: download = True просто дает разрешение на загрузку, если данных не существует, загрузчик будетавтоматически проверять, существуют ли данные, если они существуют, они все равно не будут загружены, даже если для загрузки задано значение true, снова это происходит в фоновом режиме, вам не нужно об этом беспокоиться.

Ans5:Проблема не в том, что проблема с факелами, это в большей степени связано с тем, как она компилируется в Windows, проблема обсуждается подробно здесь & здесь

...