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 rate : 3.274062485159683e-06
learning rate : 2.6963216605450136e-07
learning rate : 0.0005354042439495625
learning rate : 0.005798475348728524
learning rate : 0.0012110296621126036
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 rate : 7.51295962515223e-05
learning rate : 0.0001615973645254993
learning rate : 1.5716352216470254e-07
learning rate : 2.3497042596825514e-05
learning rate : 0.00030187976092019444
learning rate : 0.0007784465450918935
learning rate : 0.0034211304094094444
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 rate : 1.9780955621924975e-06
learning rate : 0.022373813174159433
learning rate : 4.4042734208095536e-07
learning rate : 0.0001808246710627908
learning rate : 2.4795041777544588e-05
learning rate : 0.0003039511952826749
learning rate : 0.0009978291128342834
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 rate : 0.0001034910376490248
learning rate : 2.621362765210038e-07
learning rate : 4.384015612002874e-07
learning rate : 0.0024524734494728914
learning rate : 0.0013043939428441858
learning rate : 0.004560375610839073
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 rate : 4.0301680685118736e-05
learning rate : 0.00040873834739596444
learning rate : 1.2670450875718284e-06
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 rate : 0.00010814001395294543
learning rate : 0.0216002412867766
learning rate : 0.0014217961061235333
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 rate : 0.030389015849825327
learning rate : 0.0764555224354437
learning rate : 0.0020307565829352234
learning rate : 0.006813682884350972
まとめ
ハイパーパラメーターを変更して試行を繰り返すことで高い精度で学習を行うことができました。
トマトとりんご、犬と猫、の判定が100%に達するのが難しい結果となりました。
なかなか規則性が見えなくて、ネットワークが同じでも扱うデータが変わると適切なlearning rateを探してから学習した方が良さそう、くらいしか言えない結果となりました。