(15) cuda-convnetでMNIST自動認識(その2)

投稿者: | 2014年7月9日

2,027 views

この記事は最終更新から 1812日 が経過しています。

(14) cuda-convnetでMNIST自動認識 に続き、今度はちょっとリッチなレイヤー構成で試してみる。

1. 実験内容

ちょっとリッチなレイヤー構成はこんな感じ。
[IN]-[CONV][POOL][CONV][POOL]-[OUT]の結合で、[CONV] [POOL] は各16枚の厚みを持たせている。

[data]
type=data
dataIdx=0

[labels]
type=data
dataIdx=1

[conv1]
type=conv
inputs=data
channels=1
filters=16
padding=0
stride=1
filterSize=5
initW=0.0001
partialSum=1
sharedBiases=1
neuron=tanh[1,1]

[pool1]
type=pool
pool=max
inputs=conv1
start=0
sizeX=2
stride=2
outputsX=0
channels=16

[conv2]
type=conv
inputs=pool1
filters=16
padding=0
stride=1
filterSize=5
channels=16
neuron=tanh[1,1]
initW=0.01
partialSum=1
sharedBiases=1

[pool2]
type=pool
pool=avg
inputs=conv2
start=0
sizeX=2
stride=2
outputsX=0
channels=16

[fcOut]
type=fc
outputs=10
inputs=pool2
initW=0.01
initB=0.1

[probs]
type=softmax
inputs=fcOut

[logprob]
type=cost.logreg
inputs=labels,probs

学習率、momentum、L2正則化係数はこんな感じ。

[conv1]
epsW=0.01
epsB=0.01
momW=0.9
momB=0.9
wc=0.0001

[conv2]
epsW=0.01
epsB=0.01
momW=0.9
momB=0.9
wc=0.0001

[fcOut]
epsW=0.01
epsB=0.01
momW=0.9
momB=0.9
wc=0.0001

[logprob]
coeff=1

2. 実行結果

1epoch完了時点で正解率が 93.3% (error rate=0.0670)
10epoch完了時点で正解率が 98.0% (error rate=0.0194)

=========================
1.1... logprob:  1.066792, 0.262400 (1.194 sec)
1.2... logprob:  0.411331, 0.117200 (0.622 sec)
1.3... logprob:  0.342615, 0.099900 (0.623 sec)
1.4... logprob:  0.316771, 0.091300 (0.623 sec)
1.5... logprob:  0.282887, 0.084500 (0.623 sec)
1.6... logprob:  0.230386, 0.063700 
======================Test output======================
logprob:  0.221841, 0.067000 
---
10.1... logprob:  0.073848, 0.020500 (0.623 sec)
10.2... logprob:  0.074025, 0.020300 (0.623 sec)
10.3... logprob:  0.074177, 0.020200 (0.622 sec)
10.4... logprob:  0.077257, 0.023000 (0.623 sec)
10.5... logprob:  0.077007, 0.024400 (0.622 sec)
10.6... logprob:  0.063696, 0.017700 
======================Test output======================
logprob:  0.068057, 0.019400 

実際の自動認識結果を見てみると…

[user@linux]$ SAVEDATA=../save/MNIST/ConvNet__2014-07-09_22.10.42/
[user@linux]$ python ../cuda-convnet-read-only/shownet.py -f $SAVEDATA --show-preds=probs

20140709_03
20140709_04

既存の学習結果を使用してテストだけ実行したいときは…
convnet.pyの引数は下記の3個だけでよい。

python convnet.py -f xxxx/ConvNet__2014-07-08_00.22.30 --test-only=1 --test-range=6

コメントを残す

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