●畳み込み2層目は入力チャネル数が16ある

 Pythonと同じことを
EXCELでやってみるとこのファイルのようになります。最初のシートCh0は入力画像のチャネル0です。Ch0〜15まで16シートあります(図7‐06)。


  図7-06 入力チャネル0のシートCh0


●畳み込みがim2colで行列乗算になる

 シートim2col0はCh0を9列に展開したものです(図7‐07)。そうすることによって畳み込みが
行列乗算になります。それらもim2col15まで16シートあります。


  図7-07 画素データを9列に展開したシートim2col0


●フィルタ係数の数も16倍になる

 シートW2_Biasにはフィルタ係数があります(図7‐08)。横方向に16個あるのは1層目と同じです。縦方向は144個ありますが、これは入力画像が
16チャネルあるからです(9×16)。
 また同シートの一番下にはバイアスの値があります。


  図7-08 係数とバイアスのシートW2_Bias


●係数行列から9行づつピックアップして乗算

 シートim2col0〜15はそれぞれ
784×9の行列ですが、シートW2_Biasは144×16の行列なのでこのままでは乗算できません。したがってシートW2_Biasから9行づつピックアップした9×16の行列と乗算します。すなわち、

 シートim2col0_W2は「シートim2col0」と「シートW2_Biasの1から9行目まで」との行列乗算(図7-09)。
 シートim2col1_W2は「シートim2col1」と「シートW2_Biasの10から18行目まで」との行列乗算。
      :       :       :
 シートim2col15_W2は「シートim2col15」と「シートW2_Biasの136から144行目まで」との行列乗算です。

 将来のハードウエア化を見越してこのように行列演算を16回に分けます。画素データはチャネルごとに別々の画像メモリに置かれます。それらを同時に(
並列に)読み出して16倍高速化するためです。



  図7-09 行列乗算結果のシートim2col0_W2



 行列の乗算結果はim2col0_W2〜im2col15_W2まで16個あり、それぞれ784×16の行列になります。それらを足し込んだものがシートim2colAll_W2になります(図7‐10)。


  図7‐10 行列乗算16枚分足し込んだシートim2colAll_W2


次のページへ


目次へ戻る