(14) cuda-convnetでMNIST自動認識(その1)

投稿者: | 2014年7月9日

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

20140709_01
20140709_02


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です