スポンサーリンク

「Chainer v2による実践深層学習」を写経してみる(1)MNIST-NN

最近、衝動買いしてしまった以下の本。

Google検索しながら、chainerのtrainerを使用しない方法でMNISTをやろうとしたが、うまくいかず。

あきらめて、trainerを使用する方法を写経してみる

上記本のサンプルコード

http://www.ohmsha.co.jp/data/link/978-4-274-22107-1/index.htm

(環境)
Panasonic CF-RZ4
Windows 8.1 Pro
Anaconda 4.4.0
Python 3.5
Chainer 2.0

(1)本の附属のmnist-nn.pyを、Jupyter Notebook上で写経してみる

Shift + Enterで実行。うまくいった。

(2)最後に、以下の1行を追加して、再度実行。

chainer.serializers.save_npz('my_mnist.model’, model) # Added

(参考)https://qiita.com/abechi_17/items/b271b7042fae126616d7

predict_mnist.py を新規作成し、上記サイトのコードをコピペ。

と思ったが、結局うまくいかず。。。

(3)もう一度、以下のサイトの写経にtryしてみる。といっても、前編のtrain_mnist.py が見つけられず、昨日はできなかったが、今回は、公式サイトのtagをv2にして、コピペしてみた。

ChainerとFlaskで作る機械学習デモアプリ 前編 モデルの作成と保存
2017/10/6
https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_1/

ChainerとFlaskで作る機械学習デモアプリ 後編 Webアプリの構築
2017/10/6
https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/

公式Github MNIST tag v2 chainer/examples/mnist/train_mnist.py
https://github.com/chainer/chainer/blob/v2/examples/mnist/train_mnist.py

ファイル構成

(3-1)https://github.com/chainer/chainer/blob/v2/examples/mnist/train_mnist.py
のコードを、train_mnist.py にコピペしたのち、下から3行目あたりに、以下の1行を追加。

chainer.serializers.save_npz('mnist.model', model)

(3-2)Anaconda Promptで以下を実行。

python train_mnist.py

これにより、train_mnist.py と同じフォルダに、mnist.model というファイルが作成される。

(3-3)templates/ フォルダを作成、その中に、index.html ファイルを作成して、https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/

のコードをコピペして保存。

(3-4)train_mnist.py と同じフォルダに、predict.py ファイルを作成して、https://recipe.narekomu-ai.com/2017/10/chainer_web_demo_2/

のコードをコピペして保存。なお、38行目のload_npz() の一つ目の引数を、

'mnist.model’

に変更して、保存する。

(3-5)空の、static/ フォルダを作成しておく。

(3-6)Anaconda Promptで、以下を実行。

python train_mnist.py

(3-7)WEBブラウザで、localhost:5000 を開いて、28×28の白黒反転手書き数字をアップロードすると、ちゃんと判定してくれた!感動!

なお、画像は、Windows8.1付属の「ペイント」で作成した。

やっと、chainer + flaskで、画像を推測することができるようになった。。。

あともう少し。。。