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

7層のネットワークを動かす 1の続きです。
学習結果の精度、実行時間、最大メモリ使用量、を取得します。

環境は、Mac mini (CPU 2.8GHz / メモリ 16GB / SSD / (GPU Intel Iris 1536MB))です。
処理はCPUで行われます。

実行結果 [Adam]

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

画像は、training用200枚、testing用20枚としています。
OptimizerとしてAdamを使ったときの結果です。lr(learning rate)は、変更せずに0.001のままとしています。
メモリ使用量を抑制する目的で、ミニバッチサイズを50にしています。

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

タチコマ、猫

56 x 56

実行に14分かかりました。最大メモリ使用量は801MBでした。

learning_graph_adam_101

real 820.80
user 1209.32
sys 207.00
801816576 maximum resident set size

トマト、みかん

56 x 56

実行に13分かかりました。最大メモリ使用量は786MBでした。

learning_graph_adam_102

real 761.67
user 1140.59
sys 197.61
786149376 maximum resident set size

トマト、りんご

56 x 56

実行に13分かかりました。最大メモリ使用量は791MBでした。

learning_graph_adam_103

real 768.93
user 1148.17
sys 197.41
791425024 maximum resident set size

犬、猫

犬と猫の判定は学習が進まない場合があったので、画像データのサイズを大きくすることで結果が変わるか試行しました。単純に情報が増えて精度が向上するという予想です。

56 x 56

実行に13分かかりました。最大メモリ使用量は819MBでした。

learning_graph_adam_110

real 770.28
user 1151.05
sys 196.15
819740672 maximum resident set size

112 x 112

実行に1時間19分かかりました。最大メモリ使用量は2.2GBでした。

learning_graph_adam_111

real 4740.57
user 4429.60
sys 1514.42
2216738816 maximum resident set size

168 x 168

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

learning_graph_adam_112

real 11466.01
user 9977.16
sys 3600.04
4734939136 maximum resident set size

224 x 224

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

learning_graph_113

real 21751.53
user 18359.36
sys 6775.70
6756798464 maximum resident set size

画像サイズが大きくなっても精度は上がらない結果となりました。
224×224が最も悪い結果になってしまいました。予想と反する結果となりました。残念です。

実行結果 [AdaGrad]

OptimizerをAdaGradにして、他は全く同じ設定で動作させます。

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

タチコマ、猫

56 x 56

実行に14分かかりました。最大メモリ使用量は787MBでした。

learning_graph_001

real 815.96
user 1201.60
sys 206.29
787714048 maximum resident set size

トマト、みかん

56 x 56

実行に13分かかりました。最大メモリ使用量は769MBでした。

learning_graph_002

real 781.71
user 1164.19
sys 195.83
769863680 maximum resident set size

トマト、りんご

56 x 56

実行に13分かかりました。最大メモリ使用量は775MBでした。

learning_graph_003

real 773.56
user 1158.42
sys 193.17
775073792 maximum resident set size

犬、猫

56 x 56

実行に13分かかりました。最大メモリ使用量は792MBでした。

learning_graph_010

real 792.93
user 1175.71
sys 197.28
803688448 maximum resident set size

112 x 112

実行に1時間20分かかりました。最大メモリ使用量は2.1GBでした。

learning_graph_011

real 4801.89
user 4497.65
sys 1510.67
2146906112 maximum resident set size

168 x 168

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

learning_graph_012

real 11732.67
user 10214.76
sys 3661.98
4573364224 maximum resident set size

224 x 224

実行に6時間4分かかりました。最大メモリ使用量は6.6GBでした。
ミニバッチサイズを100にすると、倍くらいのメモリ使用量になりました。8GBのメモリのPCで実行するとGB単位のswapが発生し続けてしまいます。

learning_graph_013

real 21894.03
user 18549.95
sys 6728.55
6634545152 maximum resident set size

こちらも、画像サイズが大きくなっても精度は上がらない結果となりました。
少なくともlrの調整は必要そうです。

まとめ

  • 見た目が大きく異なるものに対しては、すぐに100%の精度で判定できるようになる
  • 7層のネットワークでも2分類で80%くらいの精度は得られる
  • 7層のネットワークでも224×224を入力とすると、Mac miniの上位機種で6時間かかる
  • ミニバッチサイズを100とか200にして、224×224を入力とすると、7層であっても、メモリが16GBでは足りない
  • Optimizerとハイパーパラメーターの組み合わせ次第では学習が全く進まない場合がある
  • トマトとみかんの判定は、犬と猫の判定と同じくらい難しい ?

次は、ハイパーパラメーターを変更して動作させます。

参考

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





«       »