LoginSignup
8
13

More than 5 years have passed since last update.

MNISTにおける入力データの詳細

Last updated at Posted at 2017-02-22

DeepLearningの基本的サンプルであるMNISTの入力データの詳細を調べてみる。
これを理解することで、自分で学習させたいデータを作成する際の参考となると思われる。

入力データの種類

MNISTでは以下の4種類のデータを入力データとして読み込んでいる。

ファイル名 内容
train-images-idx3-ubyte.gz 学習用画像データ
train-labels-idx1-ubyte.gz 学習用ラベルデータ
t10k-images-idx3-ubyte.gz テスト用画像データ
t10k-labels-idx1-ubyte.gz テスト用ラベルデータ

これらのファイルはzipで圧縮されているため、実際に使用する際には内部的に解凍してから使用している。

学習用の画像枚数は60,000枚、テスト用の画像枚数は10,000枚となっている。
また、学習用データのうち5,000枚を検証用として使用している。(枚数は変更可能)
ラベルの識別数は10種類(0~9)である。

画像データ

画像データのフォーマットは以下のようになっている。
(例)train-images-idx3-ubyte.gz:学習用画像データ(28x28pixel、60,000枚)
image1.png

0x0000~0x0003:マジックナンバー(2051) ※これでMNISTの画像データかを判断している
0x0004~0x0007:画像枚数(60,000)
0x0008~0x000b:画像の高さ(28)
0x000c~0x000f:画像の幅(28)
0x0010~0x032f:1枚目の画像データ ※1pixelは1byte整数固定

画像データが60,000枚分続き、ファイルが終了する。

ラベルデータ

ラベルデータのフォーマットは以下のようになっている。
(例)train-labels-idx1-ubyte.gz:学習用ラベルデータ(10分類、60,000枚)
image2.png

0x0000~0x0003:マジックナンバー(2049) ※これでMNISTのラベルデータかを判断している
0x0004~0x0007:画像枚数(60,000)
0x0008~0xea67:各画像のラベルの値 ※ラベルの値(0~9)は1byte整数固定

ラベルデータが60,000枚分続き、ファイルが終了する。
なお、各画像のラベルデータは、直接対応する分類番号が入っていることに注意すること。
各画像に対応する各識別値を指定したい場合は、0~9に対応したフラグ(0 or 1が10個)のような構造にする必要がある。
※もちろん、データだけでなく処理も修正が必要になる

参考

TensorFlowの場合、MNISTデータの読み込み処理は「tensorflow\contrib\learn\python\learn\datasets\mnist.py」にあるので、独自のデータを扱う際には、これを真似するのが理解しやすく良さそうだ。

8
13
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
8
13