はじめに
Tensorflowの勉強をしばらくほったらかしにしていたので、復讐復習をかねてぼちぼちやっていく。
以前、下記サイトを読んでTensorflowの多層ネット化をもう少しわかりやすく書けないかなーと思い、今回作ってみた。
http://qiita.com/TomokIshii/items/92a266b805d7eee02b1d
ソース
冒頭の変数宣言は気に入らないなと思いつつ、ひとまずアップしたソースのリンクをば。
mnizst_SDG.py
IPythonnのstartupファイルを設定しなくてもいいようにimportを追加 2016/10/08
loss関数のcross_entropyの式を間違えていたので修正 2016/10/10
実装の概要
なお、このソースファイルは、以下の本家(https://www.tensorflow.org/versions/r0.9/tutorials/mnist/beginners/index.html) のソースファイルを元に改良を加え。Tensorflowの礼儀作法に習い、以下の3関数を実装している。
1. inference
2. loss
3. training
ついでに、学習前・中・後のベンチマーク用にtest関数を実装している。
(結果しか見えないなんてつまんないです。後々のことも考えて。)
実行環境
ざっくり以下の環境。
・Mac OS X 10.10.5
・Python 3.5.1
・virtualenv
・IPython
処理内容(特筆すべき処理)
では、コードの説明をしよう。
正直、inferenceに該当する部分以外は特別いじっていないので省略する。
inferenceでは、次のようなニューラルネットを構築している。
1. 入力層(input_placeholder)、隠れ層(y1)、出力層(y2)で全結合
2. 入力層〜隠れ層間の結合の重みは W1 と b1、隠れ層〜出力層間の結合の重みは W2 と b2
3. 重みは、平均 0 、偏差 0.1(分散 0.01)で初期化
4. 中間層の活性化関数は、sigmoid、softplus、relu のいずれか(テスト済み)
処理内容(ここだけ気をつけて)
学習中のテストには、学習データから除外された確認用のデータを使用していることに注意すれば、あとは本家の処理そのものである。