カニカニクラブライフ

Python系技術メモ、書評とか

Tensorflowチュートリアルの簡単なやつをやってみるだけ(MNISTをソフトマックス回帰で分類する)

f:id:russENG:20170705125428p:plain


タイトルの通りです。

僕たちはいつだって MNISTを分類するだけ。


基本的には、ここの引用です。

qiita.com


写経しながらメモを取って、自分以外にはすごく読みづらいドキュメントを作ることができました!


今回は28pixel×28pixelの画像をフラット(一直線のベクトル)にして入力データとしている

 ・平面上の位置情報を保持したまま使うには、畳み込みでネットワークを設計しなきゃいけないのでしょう(多分)

わかんないことはたくさんあるけど、考え方に慣れなきゃいけないので「そんなもんかー」と思って進めています。

 ① 普通に画像なりテキストの自前のデータを用いる場合はどうするのか?*1

 ② validationのデータセット使ってないよね?(パラメータの設定がないから?)

 ③ セッションという概念?が私には謎味。訓練や結果の出力に使っている。*2

Jupyter Notebookを公開するのに、GithubのGistを初めて使った❤️

 ・ハートが可愛い。

 ・MacPython環境を入れるのにAnacondaを使っているので、仮想環境condaの中にTensorflowを入れてます(Tensorflow公式は非公認(らしい))。

 ・conda を使うと、Jupyter Notebook上でも、一瞬で環境が切り替えられるので、いろいろ試行錯誤したい私には便利です。


ソフトマックス回帰と呼ばれているもの

https://www.tensorflow.org/versions/master/images/softmax-regression-scalargraph.png

入力数(説明変数の数):3、出力数(ラベルの数):3 のポンチ絵*3

・ソフトマックス関数は分類問題の時に最後の出力層によく使われる。

 ・シグモイド関数の多変量バージョンらしい。

 ・出力値が0から1の間の値をとり、総和が1のため、それぞれのラベルに対する「確率」と解釈できるらしい。

・どこかで多項ロジスティック回帰と同じと書いてあったが、重みの学習してるから1層(?)のニューラルネットという気もするし、よく分からない。

・いつか可視化してやる。


わかってくるとネットワークの設計は楽しいらしい

私自身がやりたいことは実はまだ実現できていないのですが... 機械学習は"モノづくり心"を超刺激してくれるのですっかり魅了されてしまいました。 理解が深まるほど、次は"こうしてみよう"、"あーしてみよう"とアイデアが出てきます。

うまくいかないけど楽しい。 なんだろう...この懐かしい感じ。

特にプログラマーでもデータサイエンティストでもないけど、Tensorflowを1ヶ月触ったので超分かりやすく解説 - Qiita


というわけで楽しいそうなので、がんばります。

*1:2017/7/12追記 普通にNumPyのArrayとかで入れればいいっぽい

*2:2017/7/12追記 【本当の初心者向け】ニューラルネットとTensorFlow入門のためのオリジナルチュートリアル1 - HELLO CYBERNETICS python写像を書き、それをTensorflowのメモリに載せるための仕組み。

*3:上記脚本の記事より引用