3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pytrochのmnistがいつの間にかダウンロードできなくなっていていつの間にか解決されていた件

Last updated at Posted at 2021-03-04

はじめに

pytorch使ってmnistを試そうと思ったらまさかのダウンロードができなかったので,
ちょっと調べてみました.
とりあえず,日本語がなかった気がするので,おそらくそんなに困っている人はいないと思います.

2021/04/05追記
この日付の時点で調べたところcolabにプリインされているpytorchのバージョンが上がっていて,この問題は起こらなくなっていそうです.

torch 1.8.1+cu101

ライブラリやパッケージは結構振り回されるので,何も心配したくない人は
こんな感じで直接ダウンロードして解凍するのが良いと思います.

# MNISTのダウンロード
!wget www.di.ens.fr/~lelarge/MNIST.tar.gz
!tar -zxvf MNIST.tar.gz
# 整形方法を決定
transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,),(0.5,)) ])

# 学習データの読み込み
trainset = torchvision.datasets.MNIST(root="./", train=True, download=False, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size, shuffle=True, num_workers=1)

# テストデータの読み込み
testset = torchvision.datasets.MNIST(root="./", train=False, download=False, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size, shuffle=False, num_workers=1)

対象

  • colabを使ってpytrochいじっている
  • 2021年になってからmnist使っていなかった人

内容

こんなエラーがでてmnistダウンロードできずに困っていたところ,
pytrochのissueでは既に解決していた,という話.

/usr/lib/python3.7/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
    647 class HTTPDefaultErrorHandler(BaseHandler):
    648     def http_error_default(self, req, fp, code, msg, hdrs):
--> 649         raise HTTPError(req.full_url, code, msg, hdrs, fp)
    650 
    651 class HTTPRedirectHandler(BaseHandler):

HTTPError: HTTP Error 403: Forbidden

バージョン

torch 1.7.1+cu101
torchvision 0.8.2+cu101

解決法

これで解決する.(と書いてある)

from six.moves import urllib
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib.request.install_opener(opener)

つまり,トータルこんな感じでかけばオッケーです.

import torch
import torchvision
import torchvision.transforms as transforms
from six.moves import urllib
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib.request.install_opener(opener)

# 学習の設定
## エポック
epochs = 200

## バッチサイズ
batch_size = 20

# 1. 整形方法を決定
transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,),(0.5,)) ])

# 2. 学習データの読み込み
trainset = torchvision.datasets.MNIST(root="./data", train=True, download=True, transform=transform)
train_dataloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size, shuffle=True, num_workers=1)

# 3. テストデータの読み込み
testset = torchvision.datasets.MNIST(root="./data", train=False, download=True, transform=transform)
test_dataloader = torch.utils.data.DataLoader(testset, batch_size=batch_size, shuffle=False, num_workers=1)

print(trainset.data.shape)

colab用のスニペットURLおいておきますね.
https://colab.research.google.com/drive/1_APWFBv-yxLDhbbphKU7HEpqG9lvVtRq?usp=sharing

おわりに

サクッと書いてみました.
バージョンによって変わると思うので,そのうちオワコン化すると思います.
オワコン化しました.

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?