21層のネットワークを動かす 2

21層のネットワークを動かす 1の続きです。
ハイパーパラメーターを変更して動作させた結果です。

環境は、Mac mini (CPU 2.8GHz / メモリ 16GB / SSD / (GPU Intel Iris 1536MB))です。
処理はCPUで行われます。
ディスプレイの電源が落ちているとき、スリープさせないように、システム設定を設定しておきます。

実行結果 (AdaGrad + ハイパーパラメーター変更)

エポック数 : 200
の結果です。

画像は、training用200枚、testing用20枚としています。

学習の時間が大きい為、OptimizerはAdaGradだけにします。
メモリ使用量を抑制する目的で、ミニバッチサイズを50にしています。

結果が良くなる順にグラフを並べています。

層の数 画像データのサイズ 1分類あたりの枚数 分類 Optimizer ハイパーパラメーター
deep(21層) 56×56 100枚 タチコマ、猫 AdaGrad lr = numpy.random
deep(21層) 56×56 100枚 トマト、みかん AdaGrad lr = numpy.random
deep(21層) 56×56 100枚 トマト、りんご AdaGrad lr = numpy.random
deep(21層) 56×56 100枚 犬、猫 AdaGrad lr = numpy.random
deep(21層) 112×112 100枚 犬、猫 AdaGrad lr = numpy.random
deep(21層) 168×168 100枚 犬、猫 AdaGrad lr = numpy.random
deep(21層) 224×224 100枚 犬、猫 AdaGrad lr = numpy.random

タチコマ、猫

56 x 56

実行に60分かかりました。最大メモリ使用量は1.3GBでした。(全て同様の結果)

real 3590.15
user 4402.82
sys 1253.42
1361981440 maximum resident set size

learning_graph_701_006_not_go_up
learning rate : 3.274062485159683e-06

learning_graph_701_005_not_go_up
learning rate : 2.6963216605450136e-07

learning_graph_701_004_3rd
learning rate : 0.0005354042439495625

learning_graph_701_003_3rd
learning rate : 0.005798475348728524

learning_graph_701_002_2nd
learning rate : 0.0012110296621126036

learning_graph_701_001_1st
learning rate : 0.0027896785921494196

トマト、みかん

56 x 56

実行に56分かかりました。最大メモリ使用量は1.3GBでした。(全て同様の結果)

real 3341.25
user 4251.83
sys 1180.62
1354481664 maximum resident set size

learning_graph_702_008_not_go_up
learning rate : 7.51295962515223e-05

learning_graph_702_007_not_go_up
learning rate : 0.0001615973645254993

learning_graph_702_006_not_go_up
learning rate : 1.5716352216470254e-07

learning_graph_702_005_4th
learning rate : 2.3497042596825514e-05

learning_graph_702_004_4th
learning rate : 0.00030187976092019444

learning_graph_702_003_3rd
learning rate : 0.0007784465450918935

learning_graph_702_002_2nd
learning rate : 0.0034211304094094444

learning_graph_702_001_1st
learning rate : 0.006531450137407872

トマト、りんご

56 x 56

実行に55分かかりました。最大メモリ使用量は1.3GBでした。(全て同様の結果)

real 3289.03
user 4204.85
sys 1165.88
1356705792 maximum resident set size

learning_graph_703_008_not_go_up
learning rate : 1.9780955621924975e-06

learning_graph_703_007_not_go_up
learning rate : 0.022373813174159433

learning_graph_703_006_not_go_up
learning rate : 4.4042734208095536e-07

learning_graph_703_005_unknown
learning rate : 0.0001808246710627908

learning_graph_703_004_3rd
learning rate : 2.4795041777544588e-05

learning_graph_703_003_2nd
learning rate : 0.0003039511952826749

learning_graph_703_002_2nd
learning rate : 0.0009978291128342834

learning_graph_703_001_1st
learning rate : 0.005989436098011199

犬、猫

56 x 56

実行に47分かかりました。最大メモリ使用量は1.3GBでした。(全て同様の結果)

real 3383.33
user 4280.63
sys 1196.07
1362063360 maximum resident set size

learning_graph_710_007_no_trust
learning rate : 0.0001034910376490248

learning_graph_710_006_not_go_up
learning rate : 2.621362765210038e-07

learning_graph_710_005_not_go_up
learning rate : 4.384015612002874e-07

learning_graph_710_004_3rd
learning rate : 0.0024524734494728914

learning_graph_710_003_2nd
learning rate : 0.0013043939428441858

learning_graph_710_002_2nd
learning rate : 0.004560375610839073

learning_graph_710_001_1st
learning rate : 0.01801892934803624

112 x 112

実行に3時間58分かかりました。最大メモリ使用量は4.4GBでした。

real 14272.43
user 14489.30
sys 4175.02
4417744896 maximum resident set size

learning_graph_711_004_not_go_up
learning rate : 4.0301680685118736e-05

learning_graph_711_003_3rd
learning rate : 0.00040873834739596444

learning_graph_711_002_2nd
learning rate : 1.2670450875718284e-06

learning_graph_711_001_1st
learning rate : 0.001614270182820435

168 x 168

実行に9時間6分かかりました。最大メモリ使用量は9.1GBでした。

real 32717.55
user 30216.08
sys 9135.26
9166458880 maximum resident set size

learning_graph_712_004_not_go_up
learning rate : 0.00010814001395294543

learning_graph_712_003_3rd
learning rate : 0.0216002412867766

learning_graph_712_002_2nd
learning rate : 0.0014217961061235333

learning_graph_712_001_1st
learning rate : 0.0023332206949005403

224 x 224

実行に15時間10分かかりました。最大メモリ使用量は物理メモリ16GBでは不足だったようで計測不能でした。
次の39層のネットワークを動かす 1で、メモリ使用量を抑える実装に変更しています。

real 54564.47
user 61097.14
sys 16528.54
4705832960 maximum resident set size

learning_graph_713_003_not_go_up
learning rate : 0.030389015849825327

learning_graph_713_003_not_go_up
learning rate : 0.0764555224354437

learning_graph_713_002_2nd
learning rate : 0.0020307565829352234

learning_graph_713_001_1st
learning rate : 0.006813682884350972

まとめ

ハイパーパラメーターを変更して試行を繰り返すことで高い精度で学習を行うことができました。
トマトとりんご、犬と猫、の判定が100%に達するのが難しい結果となりました。
なかなか規則性が見えなくて、ネットワークが同じでも扱うデータが変わると適切なlearning rateを探してから学習した方が良さそう、くらいしか言えない結果となりました。

参考

ゼロから作るDeep Learning
deep-learning-from-scratch





«       »