市販されている本(例えば『ゼロからつくるDeeplearning』とか)にうまーくパッキングされたものが付録としてついてきている場合もあるが、そういうのに頼らず、自力でやる方法を紹介する。
なぜなら本を買うとお金がかかってしまう可能性があるから。
ChainerやTensorFlowであれば、標準搭載されていますが、できるだけ高度なライブラリは使わず、できるかぎり標準的な装備でやりたいというのもあるので。
条件
- お金はかけない(市販されている本などは頼らない)
- できるだけ低装備で行う
注意
sklearnにも、load_digitsというデータセットが入っているが、こちらはMNISTを加工して作られた8ピクセル×8ピクセルの画像データで、MNISTの簡略版なので、MNISTとは違うので注意しよう。(参考:https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html)
オリジナルのMNISTは28ピクセル×28ピクセルの画像データだ。
MNISTデータをダウンロード
まずは、MNISTのデータ本体を以下のURLへアクセスしてダウンロードする。http://yann.lecun.com/exdb/mnist/
そこで、以下の4つのファイルをダウンロードしてくる。
- train-images-idx3-ubyte.gz
- train-labels-idx1-ubyte.gz
- t10k-images-idx3-ubyte.gz
- t10k-labels-idx1-ubyte.gz
それで、新しくディレクトリをつくって、そこにこの4つのファイルを入れる。
新しいディレクトリの名前はなんでもいいのですが、ここではMNIST_dataという名前にすることにする。
python-mnistをインストール
MNISTを扱うようのライブラリがあるのでインストールする。 ターミナルを起動して、以下のようにコマンドを打つ。pip install python-mnist(参考: https://pypi.org/project/python-mnist/ )
python-mnistのインポートからファイル読み込みまで
今回MNISTを読み込むコードを書くファイルは、とりあえずmnistとしておく。そして、mnistという名前のファイルと同じディレクトリに、先ほどのMNIST_dataというディレクトリも置く。
実際のインポートは以下のようにします。
from mnist import MNIST mnist = MNIST('../MNIST_data') x_train, y_train = mnist.load_training() import numpy as np import matplotlib.pyplot as plt x_train = np.asarray(x_train).astype(np.float32) x_train.shape # (60000, 784)が返ってくる。 x_train[0] # 784要素の配列が返ってくる。 plt.imshow(x_train[0].reshape(28,28)) # 画像として表示される。 plt.show()以上でMNISTのインストールが完了。
あとは、いろいろと好きなようにゴリゴリやっていくだけです。