2016年6月26日日曜日

Deep Learning入門(Chainer+Windows編)

最近小難しい画像処理をやるよりかは教育済みの人工知能に判別してもらったほうがいいのではないかと思い、試しにDeep Learningを触ってみるテスト。


下記エントリを参照したところ、Google製TensolFlow、Lasagna、日本製のChainerの3種を比較されていて、GPUによる演算速度についてはLasagna、Chainerが優秀なようで、それほど差もないみたいなので、日本の将来に期待も込めてChainer製をインストールする。




Windwos環境へのChainerインストールについては下記エントリでPythonのインストールから説明されていたので、参照させていただきました。



■環境

CPU: intel i7 3930k
GPU: NVIDIA Geforce TITAN(GK110)
OS:   Windows 8.1 64bit

■インストール済み

・Visual Studio 2013
  => PATH を追加(C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin)

・CUDA 7.5
  => PATHを追加

■Deep Learning環境構築(Chainer編)

1.Python 3.5.1 64bitのインストール
2.PythonのインストールフォルダとScriptsフォルダを環境変数のPATHに追加
3.コマンドプロンプトで pip install -U pip →pipのバージョンアップ
4.git for windowsをインストール
5.cuDNNのダウンロード
6.コマンドプロンプトでpip install chainer -g 0を実行しChanerをインストール

■動作確認

1. コマンドプロンプトで chainer\examples\mnistフォルダへ移動
2.python train_mnist.py -g 0と打つと動作が開始


■実行結果


c:\python35\chainer>cd examples\mnist

c:\python35\chainer\examples\mnist>python train_mnist.py -g 0
GPU: 0
# unit: 1000
# Minibatch-size: 100
# epoch: 20
Network type: simple

load MNIST dataset
epoch 1
graph generated
train mean loss=0.18834821649671843, accuracy=0.9437333369379243, throughput=691
.3110249556729 images/sec
test  mean loss=0.08855921053502243, accuracy=0.97180000603199
epoch 2
train mean loss=0.0747522115187409, accuracy=0.976850009560585, throughput=10381
.941450655235 images/sec
test  mean loss=0.06881112593226135, accuracy=0.9788000071048737
epoch 3
train mean loss=0.04882968860814193, accuracy=0.9839666775862376, throughput=106
20.948297869925 images/sec
test  mean loss=0.06907143144635483, accuracy=0.979700009226799
epoch 4
train mean loss=0.03349738874007016, accuracy=0.9892000088095665, throughput=105
42.620746444218 images/sec
test  mean loss=0.07294375938065059, accuracy=0.97960000872612
epoch 5
train mean loss=0.027073768219270277, accuracy=0.990983340938886, throughput=106
77.88767790045 images/sec
test  mean loss=0.09122716756464797, accuracy=0.9740000069141388
epoch 6
train mean loss=0.0223064595470593, accuracy=0.9927166734139125, throughput=9759
.258058521522 images/sec
test  mean loss=0.0672288033500081, accuracy=0.9820000064373017
epoch 7
train mean loss=0.022047765679805403, accuracy=0.9929500065247218, throughput=10
077.110092376824 images/sec
test  mean loss=0.08667147413810199, accuracy=0.9805000066757202
epoch 8
train mean loss=0.018381894112565834, accuracy=0.9939500054717064, throughput=10
100.60864158346 images/sec
test  mean loss=0.09303110711173758, accuracy=0.9797000068426133
epoch 9
train mean loss=0.01833144460947551, accuracy=0.9945333384474119, throughput=104
19.502815740656 images/sec
test  mean loss=0.08693365473445738, accuracy=0.9802000057697297
epoch 10
train mean loss=0.01621717433361482, accuracy=0.9945166717966397, throughput=104
46.218885223827 images/sec
test  mean loss=0.07281878189469808, accuracy=0.9831000065803528
epoch 11
train mean loss=0.012322531957258132, accuracy=0.9958833369612694, throughput=10
492.04429736561 images/sec
test  mean loss=0.07679061198437238, accuracy=0.9841000080108643
epoch 12
train mean loss=0.011249084522120634, accuracy=0.9963166701793671, throughput=98
15.026065226972 images/sec
test  mean loss=0.11117106852701454, accuracy=0.979300007224083
epoch 13
train mean loss=0.014876986914943397, accuracy=0.9957000040014585, throughput=93
50.331690901867 images/sec
test  mean loss=0.08766837027709584, accuracy=0.9822000062465668
epoch 14
train mean loss=0.01137099189220199, accuracy=0.9963833367824555, throughput=102
50.936668271568 images/sec
test  mean loss=0.11220182075423422, accuracy=0.9790000081062317
epoch 15
train mean loss=0.010550330964031976, accuracy=0.9965500031908353, throughput=10
665.27569862685 images/sec
test  mean loss=0.10793900951127766, accuracy=0.9788000077009201
epoch 16
train mean loss=0.00863217724114899, accuracy=0.9975166690349578, throughput=997
0.245941056204 images/sec
test  mean loss=0.08872542766274882, accuracy=0.9804000055789948
epoch 17
train mean loss=0.009105495277005389, accuracy=0.9970333361625672, throughput=97
21.225698842078 images/sec
test  mean loss=0.1051332284804596, accuracy=0.9813000047206879
epoch 18
train mean loss=0.012184605781218731, accuracy=0.9965500032901764, throughput=98
90.955442871747 images/sec
test  mean loss=0.09870909668044149, accuracy=0.9803000062704086
epoch 19
train mean loss=0.011317851965395675, accuracy=0.9967333363493284, throughput=92
57.925678194886 images/sec
test  mean loss=0.12538345889342226, accuracy=0.976500004529953
epoch 20
train mean loss=0.0084696619688476, accuracy=0.9976500021417936, throughput=9671
.66307419608 images/sec
test  mean loss=0.10508101527237233, accuracy=0.9829000061750413
save the model
save the optimizer

■反省

それぞれのライブラリインストール時に最新版が良いと勝手に判断するとインストールが失敗したり、実行時にエラーが出てどうにもならなくなるので、自分で解決できる自信がない場合は素直に他の方が示した手順通りに進めるのが大切だと痛感しました。。。

ともあれ、これでDeep Learning環境が整ったのでガツガツやっていこう!