TensorFlow : Tutorials : MNIST データダウンロード (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
日時 : 02/15/2016
* 本ページは、TensorFlow の本家サイトの Tutorials – MNIST Data Download を翻訳した上で
適宜、補足説明したものです:
https://www.tensorflow.org/versions/master/tutorials/mnist/download/index.html
* サンプルコードの動作確認はしておりますが、適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
Code: tensorflow/examples/tutorials/mnist/
このチュートリアルのゴールは(古典的な)MNIST データセットを使った手書き数字分類に必要なデータセット・ファイルをどのようにダウンロードするかを示すことです。
チュートリアル・ファイル
このチュートリアルは次のファイルを参照します :
(ファイル : 目的)
input_data.py : 訓練し評価するための MNIST データセットをダウンロードするコード
データの準備
MNIST は機械学習の古典的な問題です。問題は、0 から 9 までの全ての数字について、手書き数字のグレースケール 28×28 ピクセル画像を見て画像がどの数字を表しているかを決定するものです。

より詳細な情報は、Yann LeCun’s MNIST page または Chris Olah’s visualizations of MNIST を参照してください。
ダウンロード
Yann LeCun’s MNIST page はまたダウンロードのための訓練とテスト・データをホストしています。
(ファイル : 目的)
- train-images-idx3-ubyte.gz : 訓練セット画像 – 55000 訓練画像、5000 検証画像
- train-labels-idx1-ubyte.gz : 画像にマッチする訓練セット・ラベル
- t10k-images-idx3-ubyte.gz : テストセット画像 – 10000 画像
- t10k-labels-idx1-ubyte.gz : 画像にマッチするテストセット・ラベル
input_data.py ファイルにおいて、maybe_download() 関数がこれらのファイルが訓練のためにローカル・データ・フォルダにダウンロードされたことを保証します。
フォルダ名は fully_connected_feed.py の冒頭の flag 変数で指定され必要に応じて変更してかまいません。
Unpack と Reshape
ファイルそれら自身は標準画像フォーマットにあるわけではなく input_data.py の extract_images() と extract_labels() 関数により(website で得られる指示に従ったコーディングという意味で)手作業で unpack されます。
画像データは 2d テンソル: [画像インデックス, ピクセル・インデックス] (そこでは各エントリは特定の画像の特定のピクセルの強度 (intensity) 値で、[0, 255] から [-0.5, 0.5] にスケール変更されています。(訳注 : コードでは [0.0, 1.0] に変換されているように見えます。))に抽出されます。”画像インデックス” はデータセットの画像に該当し、0 からデータセットのサイズまで数えられます。そして “ピクセル・インデックス” はその画像の特定のピクセルに相当し、0 から画像のピクセル数までの範囲があります。
そして train-* ファイルの 60000 サンプルは訓練用の 55000 サンプルと検証用の 5000 サンプルに分割されます。データセットの 28×28 ピクセル・グレースケール画像全てについて画像サイズは 784 でそして訓練セット画像のための出力テンソルは [55000, 784] の shape です。
ラベル・データは各サンプルのための値としてのクラス識別子とともに 1d テンソル: [画像インデックス] に抽出されます。訓練セット・ラベルについては、これは従って shape [55000] になります。
データセット・オブジェクト
基本的なコードは次のデータセットのために画像とラベルをダウンロードし、unpack し、そして reshape します :
(データセット : 目的)
data_sets.train : 55000 画像とラベル、主要な訓練のため。
data_sets.validation : 5000 画像とラベル、訓練の正確性の繰り返し検証のため。
data_sets.test : 10000 画像とラベル、訓練された正確性の最終テストのため。
read_data_sets() 関数はこれらの3つのデータセットのそれぞれための DataSet インスタンスとともに辞書を返します。DataSet.next_batch()メソッドは、実行中の TensorFlow セッションに供給される画像とラベルの batch_size リストからなるタプルを取得するために使用できます。
images_feed, labels_feed = data_set.next_batch(FLAGS.batch_size)
以上