4-02 vgg-2層目のEXCEL化(続き)

●行列乗算したものを足し込んでいく

 Module03を実行すると行列乗算が行われ、im2col00_W2〜im2col63_W2シートが生成されます。

 次にMolule04を実行すると図4‐19のようにim2colAll_W2シートが生成されます。これはim2col00_W2〜im2col63_W2を足し込んだものです(*1)。

(*1)この時点でim2col00〜im2col63シート、im2col00_W2〜im2col63_W2シートは必要なくなるので削除しても良い


図4‐19 Module04まで実行

●2層目は6ビット右シフトの後Relu

 整数で行列乗算すると値が大きくなるのでModule05で
6ビット右シフトさせます。

 その後Module06のReluで負の値は0となり図4‐20のようになります。またこの際リミッタで0〜31の範囲に収めます。


図4-20 Module06まで実行

●画素を2次元的に並び替え

 Reluシートは縦に画素が並んでいるので、Module07を実行して平面的に並び替えます。図4‐21のようにoutCh00〜03シート(*3)、それぞれ横に300列、縦に4行あります(*4)。


(*3)4チャネルのみ計算。64チャネルだと時間がかかるので。
(*4)実際は300行あるが全部計算するとパソコンのメモリ不足になるので4行のみ。


図4‐21 Module07で64枚(outCh00〜63)

●画素数を縦横半分の150x150にするプーリング

 最後に「
プーリング」という作業で間引きを行います。Module08を実行すると図4‐22のように150列×2行になります(実際は150行ある)。


図4‐22 2×2画素のうち最大の画素を残すプーリング

●EXCELの2行をPythonと比較

 2層目の出力は64チャネル(Pool00〜63)あるのでこれを解凍してそれぞれのチャネルを比較します。図4‐23はlay2out_00.csvで、これは
Pythonで計算した2層目の出力チャネル0です。EXCELのPool00シートの2行を比較してピタリ一致することを確認します。


図4‐23 Pythonでの結果と比較する

●他の行を比較するには

 上図では1〜2行目を比較しましたが、3〜4行目を比較したい場合はVBAのModule02を図4‐24のように変更し、Module08まで再度実行します。。


図4‐24 im2colシート生成の部分。$A$1→$A$5のように4つ増やす


最初のページへ



目次へ戻る