2019年6月29日土曜日

MNISTデータの読み込み

これまた、いまさら感が半端無いが、MNISTの読み込み方を書いておく。

市販されている本(例えば『ゼロからつくる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のインストールが完了。

あとは、いろいろと好きなようにゴリゴリやっていくだけです。

0 件のコメント:

コメントを投稿