書いてみることにしました。使ったチュートリアルはこちらです。https://www.tensorflow.org/versions/r0.10/tutorials/mnist/beginners/index.html利用したスクリプトはこちらです。今回は1行ごとに説明を付けてみました。それではいってみましょー。input_dataまず表面的に読めば、tensorflow.examples.tutorials.mnistというライブラリから、input_dataというモジュールを読み込んでくる、ということになります。今回の目的に限って言えば、read_data_sets関数(※)の使用が目的です。※MNISTのデータをWEBからダウンロードしてロードするための関数。input_dataモジュールの実体は、/usr/local/lib/python2.7/dist-packages/tensorflow/examples/tutorials/mnist/input_data.pyです。read_data_setsとなっています。要はこれから使うであろうモジュール・ライブラリをインポートするためのライブラリです。大まかに、互換性維持のためのものと、MNISTのテストデータセットをインポートしてくるためのものがあります。肝心なのは、最後のread_data_setsで、これはMNISTデータをロードしてくるモジュールです。実体は、/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.pyの中で関数として定義されています。学習用データ、学習用データのラベル、テスト用データ、テスト用データのラベルをロードしてきます。test=test)です。reshape=reshape)です。長くなりましたが、そんなわけでこの行は、read_data_sets関数を使うためにinput_dataモジュールをロードしてくる、というための行でした。one_hot=True)1行目が分かっていれば、ここはすぐでしょう。input_dataモジュールのread_data_setsを呼んで、mnist変数に代入するわけです。教師信号はベクトル中のただ1つの要素のみが1で、それ以外が0である、という条件をTrueにしています。tftensorflowライブラリをtfの別名でインポートしています。実体は/usr/local/lib/python2.7/dist-packages/tensorflowです。784])ここは学習対象データの型と次元数を定義していて、placeholder関数がまさにそのための関数です。リファレンスはこちら。https://www.tensorflow.org/versions/r0.10/api_docs/python/io_ops.html#placeholderこの例では単精度浮動小数点のデータであり、784次元である、と定義しています。784画素である点に由来しています。tf.Variable(tf.zeros([10]))ここは、結合重みWと、バイアスbの領域を定義しています。結合重みは784個のインプット(画素)に対して、10通りの出力(0~9)があるから、784×10、となっています。言い方を変えれば、入力層が784次元、出力層が10次元、ということです。バイアスは、学習データxと結合重みWの内積に加えるものなので、10次元でOKです。b)softmax関数により計算した、出力を定義しています。softmax関数のリファレンスはこちら。https://www.tensorflow.org/versions/r0.10/api_docs/python/nn.html#softmaxmatmulはベクトルの内積を計算する関数です。10])これは教師信号用の領域です。0~9の10通りの値を持ちうるので、10次元です。reduction_indices=[1]))誤差関数を定義しています。変数名はcross_entropyとなっています。使用している関数reduce_sum、reduce_meanのリファレンスはこちら。tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)トレーニングの核となる処理を定義します。今回のチュートリアルでは、勾配降下法により学習を行います。GradientDescentOptimizerはそのための関数です。先ほど定義したクロスエントロピー(誤差関数)を最小化するように学習していきます。tf.initialize_all_variables()全ての変数を初期化しています。おまじないみたいなもんでしょう。tf.Session()セッションの定義です。Sessionクラスの定義はこちら。https://www.tensorflow.org/versions/r0.10/api_docs/python/client.html#Sessionsess.run(init)セッションの開始です。range(1000):今回は学習を1000回繰り返すので、for文で1000回繰り返すよう指定しています。mnist.train.next_batch(100)batch_xsとbatch_ysに、next_batch関数で取得した100個のミニバッチを入力します。next_batch関数は、mnistモジュールで定義されており、mnistモジュールの実体は、/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.pyにあります。前行で定義したミニバッチを使って学習します。tf.argmax(y_,1))正しく予想できたケースをブーリアンのテンソルで返します。使用しているequal関数のリファレンスはこちら。tf.float32))正答率の計算です。前行のcorrect_predictionはまだテンソルなので、cast関数で単精度浮動小数点に変換します。cast関数のリファレンスはこちら。https://www.tensorflow.org/versions/r0.10/api_docs/python/array_ops.html#cast元がブーリアン型と分かっているので、reduce_mean関数で平均を出せば、それが正答率になる、ということですね。mnist.test.labels}))計算した正答率を出力します。