記事の依存関係
以下の記事を元に環境などについては辿ってください。
ossyaritoori.hatenablog.com
Windows10でAnacondaに仮想環境を敷いた上で行っています。
Python3.5で行っておりCPUVersionです。
コードはJupyter notebookで記述しております。
MNISTについて
MNISTは0~9の手書き文字画像を7万枚集めたデータセットです。
これは標準のデータライブラリとして公開されているのでこれを用いて文字認識をしたいと思います。
以下公式?の説明の翻訳があります。
TensorFlow : ML 初心者向けの MNIST (コード解説) – TensorFlow
使用した学習モデルについて
いずれはディープラーニングとかに移行したいですが,今回は28×28の画像入力を単純に並列な入力として扱ったロジスティック回帰を行います。
- 入力層 768ノード
- 隠れ層 100ノード
- 出力層 10ノード
としました。
バイアスを加えた線形和に対して,活性化関数としてシグモイド曲線を用いています。
また,最終的なOutputはsoftmax関数で定義するものとします。
誤差関数にはクロスエントロピーを使っています。
一般的な分類問題に用いられる形です。
参考元との差異
上記のスライドの後半のコードを真似ていますが,Verが違うことに依る関数の違い等があります。
- Python2系と3系の違いによるPrint関数の変化。
- Softmax関数のCrossEntropyの記述方法が変わったことの反映
コード
例のごとくGISTで貼っておきます。
行毎にコピペして1つの.pyファイルに置いてもいいですし,
自分のnotebookに貼って試してみるのもいいでしょう。
学習の実行結果
学習に伴い,誤差関数が減少しているのがわかります。
なお,確率的再急降下はランダムなので急に上がったりします。
今回はよくできた方ですね。
WARNING:tensorflow:From <ipython-input-32-fa591c7fbded>:3: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02. Instructions for updating: Use `tf.global_variables_initializer` instead. step = 1000, loss=2.13 step = 2000, loss=1.45 step = 3000, loss=0.96 step = 4000, loss=1.22 step = 5000, loss=0.82 step = 6000, loss=0.89 step = 7000, loss=0.80 step = 8000, loss=0.67 step = 9000, loss=0.59 step = 10000, loss=0.38
警告について
なんか警告が出ていますがどうやらinitialize_all_variablesというのは今後使うなということみたいです。
TensorFlowのinitialize_all_variablesがDeprecatedになった件 - Qiita
代わりに以下のglobal~~を使えとのことです。 verが古いtensorflowでは実装されていないらしいので注意!
tf.Session().run(tf.global_variables_initializer())
結果
さて,訓練用データで訓練した結果をTestデータで検証した結果は以下のとおりです。
Accuracy (test data): 0.80% True label: [7 2 1 0 4 1 4 9 5 9 0 6 9 0 1] Est Label: [7 6 1 0 4 1 4 9 9 9 0 6 9 0 1]
やはり実用的にはちょっと低すぎますね。
層の構造を変えたりするとまた変わってきそうです。
Convolutional networkになるとどうなるんでしょうね。
エディタに関すること
jupyter notebook勧められて使いましたが結構良さげですね。
matlabでCtrl+Enterでセッションごとに実行するのとほぼ同じ感覚なので結構はかどります。
でもシャットダウンでCtrl+Cが上手くいかないのは仕様か何か?
関連書籍
TensorFlowで学ぶディープラーニング入門?畳み込みニューラルネットワーク徹底解説
- 作者: 中井悦司
- 出版社/メーカー: マイナビ出版
- 発売日: 2016/09/28
- メディア: Kindle版
- この商品を含むブログを見る
Learning Tensorflow: A Guide to Building Deep Learning Systems
- 作者: Tom Hope,Yehezkel S. Resheff,Itay Lieder
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2017/07/25
- メディア: ペーパーバック
- この商品を含むブログを見る
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (15件) を見る