TIM Labs

Chainer:畳み込み層を2層に増やしたら、さらに性能向上

| コメント(0) | トラックバック(0)
前回、畳み込み層を1層入れたら、10%精度が向上した。
ということは、もう1層追加したら、さらに精度が上がるかも知れない。

では、さっそく追加してみよう。

# Network definition
class CNN(chainer.Chain):

    def __init__(self, n_units, n_out):
        super(CNN, self).__init__(
            conv1=L.Convolution2D(None, 36, 3),     # 追加行
            conv2=L.Convolution2D(None, 36, 3),     # 追加行
            l1=L.Linear(None, n_units[0]),  # n_in -> n_units[0]
            l2=L.Linear(None, n_units[1]),  # n_units[0] -> n_units[1]
            l3=L.Linear(None, n_out),  	    # n_units[1] -> n_out
        )
        
    def __call__(self, x):
        c1 = F.relu(self.conv1(x))                  # 追加行
        c2 = F.relu(self.conv2(c1))                 # 追加行
        h1 = F.relu(self.l1(c2))
        h2 = F.relu(self.l2(h1))
        return self.l3(h2)
変更は僅かであり、説明する必要もないだろう。 1層のときの出力チャネル数は48だったが、今回は36チャンネルにした。 チャネル数をいくつにするのがベストなのかよくわからないので、適当に値を変えて、一番良さそうな値を選んだだけであり、根拠はない。
では、早速走らせてみよう。
CIFAR-10$ python train_cifar3.py -g 0 -u 200 200 -e 20
GPU: 0
# number: 50000
# units: [200, 200]
# Minibatch-size: 100
# epoch: 20

epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time
1           1.4159      1.13834               0.48884        0.599                     9.25972       
2           0.97892     0.988769              0.65318        0.654                     18.4154       
3           0.746028    0.980138              0.73654        0.6667                    27.5391       
4           0.542533    1.07012               0.810679       0.66                      36.6622       
5           0.343509    1.23141               0.88124        0.6609                    45.7941       
6           0.203577    1.43938               0.930721       0.6502                    54.9523       
7           0.130787    1.79407               0.955861       0.6455                    64.1065       
8           0.10182     2.02728               0.965981       0.641                     73.2419       
9           0.0723793   2.26742               0.976501       0.6303                    82.3618       
10          0.069895    2.23746               0.976921       0.6361                    91.4902       
11          0.0561796   2.46271               0.98124        0.6307                    100.622       
12          0.0611673   2.62696               0.979021       0.6274                    109.749       
13          0.0434337   2.80836               0.985561       0.6262                    118.893       
14          0.0537561   2.52369               0.9824         0.6351                    128.022       
15          0.054097    2.75292               0.98178        0.6274                    137.158       
16          0.045905    2.88034               0.9847         0.6354                    146.3         
17          0.038558    2.94397               0.98716        0.6351                    155.418       
18          0.0468413   2.75888               0.98436        0.627                     164.583       
19          0.0346255   3.07014               0.98884        0.6249                    173.721       
20          0.0300259   3.2695                0.99022        0.6193                    182.873       
CIFAR-10$ 

accuracy-CNN2.png
畳み込みを1層から2層にすることで、テスト精度の最大値が、61.89%から66.67%に向上した。
約5%精度が向上した。
まあまあだ。
でも、向上の割合は半減しているので、畳み込み層を単純に増加させるだけでは限界が近いようだ。
何か別のことも試さないといけない。

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/621

コメントする

このブログ記事について

このページは、fujiが2017年5月19日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「データ解析のための統計モデリング入門 一般化線形混合モデル(GLMM) 読書メモ1」です。

次のブログ記事は「データ解析のための統計モデリング入門 一般化線形混合モデル(GLMM) 読書メモ2」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。