●9個のVBAマクロを順番に実行する

 その後は3層目と同じようにひたすらVBAマクロを実行します。表2-01の
順にすべて実行してください。

  表2-01 VBAマクロ一覧
モジュール名 マクロ名 機能 シートの数
Module1 Sub layer4_in 入力画像生成(前層から転写) 32
Module2 Sub layer4_im2col im2col関数 32
Module3 Sub layer4_mmult 行列乗算 32
Module4 Sub layer4_all 32シートの加算 1
Module5 Sub layer4_truncate 8ビット右シフト(1/256) 1
Module6 Sub layer4_plus バイアス加算 1
Module7 Sub layer4_relu ReLU関数+255でリミッタ 1
Module8 Sub layer4_out 32チャネルに分割 32
Module9 Sub layer4_pool プーリング 32

●重み係数とバイアスのシートだけはPythonからコピペしたもの

 最初のシート(W4_Bias)には重み係数とバイアスがあります。これはPythonからCSV形式で書き出したものをコピペしたものです(図8-23)。縦方向に288個ありますが、これはこの層の入力が32チャネルあることによります(9×32)。横方向には32個ありますが、これはこの層の出力が32チャネルになるということです。



  図8-23 シートW4_Biasは4層目の重み係数とバイアスがある


 図8-24はVBAマクロModule8, Sub layer4_outを実行した結果で、outCh00〜31の32枚あります。それぞれ16×16画素からなります。



  図8-24 マクロModule8, Sub layer4_outを実行すると32チャネル得られる


●Pythonで実行した結果と比較する

 図8-25は
Pythonで4層目を実行した結果です。EXCELで計算したものとピタリ一致しています。全部で32チャネルあるので皆一致することを確認します。



  図8-25 PythonをAnaconda Jupyter Labで走らせた結果


さらにプーリングを施して4層目の結果は8x8画素になる

 最後のマクロModule9, Sub layer4_poolを実行した結果は図8-26です。これは16×16画素を
8×8画素に間引いたもので、この処理を「プーリング」といい(*1)、これが次の層の入力になります



  図8-26 プーリングで画素が8x8になった


(*1)outCh00を図8-27のように2×2の領域に分け、各領域の一番大きい値をピックアップしたものがプーリング結果(図8-26)になる。



  図8-27 各領域の最大値をとって画素数を減らす


●4層目はこれで終わり、5層目、6層目もこの手順で実行します。

次のページへ


目次へ戻る