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
既存の学習結果を使用してテストだけ実行したいときは…
convnet.pyの引数は下記の3個だけでよい。
python convnet.py -f xxxx/ConvNet__2014-07-08_00.22.30 --test-only=1 --test-range=6