※現在、ブログ記事を移行中のため一部表示が崩れる場合がございます。
順次修正対応にあたっておりますので何卒ご了承いただけますよう、お願い致します。
Chainer$ python train_mnist.py -g 0 -b 1000 GPU: 0 # unit: 1000 # Minibatch-size: 1000 # epoch: 20 epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time 1 0.398479 0.165815 0.8895 0.9507 0.972913 2 0.130305 0.103915 0.9622 0.9661 1.82951 3 0.0807383 0.0763431 0.976533 0.9764 2.68751 ・・・・・・・・・・・・・・・ 中 略 ・・・・・・・・・・・・・・・ 18 0.000367914 0.0654017 1 0.9838 15.6677 19 0.000316801 0.0666274 1 0.984 16.5294 20 0.000283742 0.0675182 1 0.9839 17.3905 Chainer$実行時間は、17.39秒であり、b=100のとき(49秒)と比べて約2.8倍高速になった。 まとめて処理する単位を増やすと、全体の計算量は変わらないはずなのだが、かなり効率的になるようだ。
-b 100 (デフォルト) | 0 16937 C python 209MiB | -b 1000 | 0 16917 C python 317MiB | -b 2000 | 0 16998 C python 339MiB | -b 5000 | 0 17031 C python 493MiB | -b 10000 | 0 17343 C python 639MiB |ミニバッチのサイズを大きくするとより高速になっていくと言いたいところだが、それは100を1000にした時には効果的だったのだが、10000にしても、速度はほとんど上昇しない。
Chainer$ python train_mnist.py -g 0 -b 10000 GPU: 0 # unit: 1000 # Minibatch-size: 10000 # epoch: 20 epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time 1 1.37287 0.512147 0.660883 0.8614 0.905861 2 0.437023 0.361621 0.87135 0.901 1.69545 3 0.335709 0.294568 0.905283 0.9191 2.50435 ・・・・・・・・・・・・・・・ 中 略 ・・・・・・・・・・・・・・・ 18 0.0516563 0.0811957 0.986567 0.9746 14.6888 19 0.0475925 0.0765162 0.987367 0.9759 15.4938 20 0.0428052 0.074131 0.988917 0.9778 16.29 Chainer$それよりも、accuracyが少し落ちてきたのがわかる。