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個になります。


目次へ戻る