はじめに
EMNIST(Extended MNIST)というデータセットがあり,それを用いた実験をPytorchで行おうとした際にEMNISTがダウンロードできないというエラーに陥った際の解決方法を紹介します.
環境
2つの環境で試し,どちらでもうまくいきました
- OS: MacOS / Linux
- python: 3.7.4 / 3.5.1
- torchvision: 0.4.0
原因
データセットへのリンクが切れており,Pytorchでインストールする際にエラーが起こっていました.(こちらにてその旨が書かれています)
実行したこと
torchvisionのIssueにてEMNIST関連があるかみていたところ数日前に開かれたissueを見つけました.
単純にurl先が切れているとのことで,新たなリンク先に変更すれば良いとのことでした.
Pypiでインストールをしていたため,以下の方法で直接torchvision.datasets.mnistを書き換えることによって無事インストールが始まりました.
解決方法
単純にtorchvisionパッケージのdatasets/mnist.pyの1行をいじれば良いのですが,インストール方法によってこの場所が異なります.(また,直接パッケージをいじるためあまり良い方法ではないです...)
$ vim ~/.local/pyenv/versions/3.7.4/lib/python3.7/site-packages/torchvision/datasets/mnist.py
これによって開かれたファイルの230行目あたりにEMINSTクラスがあります. def __init__(...) の
直前にurlを指定している部分があるので,そこを
url = 'http://www.itl.nist.gov/iaui/vip/cs_links/EMNIST/gzip.zip'
に書き換えるだけです.
最後に
何度かリンクが切れているらしく,上記のurlでは今後上手くいかない可能性があります.
その際はtorchvisionのIssueにて検索することをオススメします.