2,083 views
(12) cuda-convnet用MNISTデータを作る(その2)で batches.meta を作り、
(13) cuda-convnet用MNISTデータを作る(その3)で data_batch_n を作り、
いよいよ cuda-convnet で MNIST を学習&テストしてみる。
1. 実験内容
まずは (4) シンプル構成の初版は正解率91% で最高スコアを記録した
「4層 [784]-[256]-[64]-[10] の正解率91.9%」
に近いレイヤー構成で試してみる。
レイヤーの構成はこんな感じ。
[data] type=data dataIdx=0 [labels] type=data dataIdx=1 [fc1] type=fc inputs=data outputs=256 initW=0.1 neuron=logistic [fc2] type=fc inputs=fc1 outputs=64 initW=0.1 neuron=logistic [fcOut] type=fc outputs=10 inputs=fc2 initW=0.1 initB=0.1 [probs] type=softmax inputs=fcOut [logprob] type=cost.logreg inputs=labels,probs
学習率、momentum、L2正則化係数はこんな感じ。
[fc1] epsW=0.05 epsB=0.05 momW=0.9 momB=0.9 wc=0.00001 [fc2] epsW=0.05 epsB=0.05 momW=0.9 momB=0.9 wc=0.00001 [fcOut] epsW=0.05 epsB=0.05 momW=0.9 momB=0.9 wc=0.00001 [logprob] coeff=1
2. 実行結果
1epoch完了時点で正解率が 88.5% (error rate=0.1146)
10epoch完了時点で正解率が 93.6% (error rate=0.0640)
========================= 1.1... logprob: 1.470148, 0.409900 (0.660 sec) 1.2... logprob: 0.599354, 0.162500 (0.102 sec) 1.3... logprob: 0.474667, 0.133800 (0.102 sec) 1.4... logprob: 0.441993, 0.130400 (0.102 sec) 1.5... logprob: 0.427795, 0.127700 (0.102 sec) 1.6... logprob: 0.363772, 0.107600 ======================Test output====================== logprob: 0.382512, 0.114600 --- ======================================================= (0.150 sec) 10.1... logprob: 0.215052, 0.064400 (0.103 sec) 10.2... logprob: 0.224370, 0.068200 (0.102 sec) 10.3... logprob: 0.226908, 0.070900 (0.102 sec) 10.4... logprob: 0.212489, 0.065500 (0.102 sec) 10.5... logprob: 0.231503, 0.069500 (0.102 sec) 10.6... logprob: 0.192322, 0.057600 ======================Test output====================== logprob: 0.209273, 0.064000
実際の自動認識結果を見てみると…
[user@linux]$ SAVEDATA=../save/MNIST/ConvNet__2014-07-09_21.45.35/ [user@linux]$ python ../cuda-convnet-read-only/shownet.py -f $SAVEDATA --show-preds=probs