LoginSignup
3
4

More than 5 years have passed since last update.

TensorflowでMNISTデータ認識+多層ニューラルネット

Last updated at Posted at 2016-10-05

はじめに

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 のいずれか(テスト済み)

処理内容(ここだけ気をつけて)

学習中のテストには、学習データから除外された確認用のデータを使用していることに注意すれば、あとは本家の処理そのものである。

処理結果

実行するとこんな感じである。いい感じですね。
スクリーンショット 2016-10-05 17.36.28.png

3
4
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
3
4