8-07 4,5,6層目の演算イメージ
●4層目は入力32枚(256画素)、出力画像32枚(64画素)、計9216サイクル
前節、畳み込み3層目では7,056サイクルかかりました。
4層目は入力のチャネル数が"32"と3層目の2倍になるので乗算器も2倍の256個で計算します。入力の画素数が16x16=256と少し多くなるので、そのぶんサイクル数が増えて9,216サイクルで終了します。 |
図8-101 畳み込み4層目の演算のイメージ
●5層目は入力32枚(64画素)、出力画像64枚(64画素)、計9216サイクル
4層目では出力をプーリングするので、5層目の入力の画素数は8x8 = "64"と4分の1になります。その代わり出力のチャネル数が"64"と2倍になり、その辺りを鑑みると5層目の構成は図8-102のようになります。
乗算器を32×4=128個が並列に動作し、9×64=576サイクルで4チャネルぶん計算します。それを16回繰り返し、576×16=9216サイクルで64チャネル全部終了します。 |
図8-102 畳み込み5層目の演算のイメージ
●6層目は入力64枚(64画素)、出力画像64枚(16画素)、計9216サイクル
6層目の入力は64チャネルと2倍になるので乗算器は5層目の2倍、64×4=256個になります。それらが並列に動作し、9×64=576サイクルで4チャネルぶん計算します。それを16回繰り返し、576×16=9216サイクルで64チャネル全部終了します。最後にプーリングが施され、4×4=16画素になり、これで畳み込み層は終了です。 |
図8-103 畳み込み6層目の演算のイメージ
●パイプライン化した際のスループットは9k台のサイクル数になりそう
畳み込み1,2,3層はそれぞれ7056サイクルで終了しました。それに対し4,5,6は若干増えて9216サイクルで終了します。これら6層をパイプライン化するとスループットは9,216+α、レイテンシはその6倍程度になりそうです。
●サイクル数を各層バランス良くして乗算器の無駄遣いを避ける
使用する乗算器は1層目が16個、これは普通の乗算器(符号付き9ビット入力)です。それ以降はビットシフト型の乗算器になり、2層目は256個、3層目が128個、4層目が256個、5層目が128個、6層目が256個になります。 |
目次へ戻る |