●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層目もこの手順で実行します。 |
次のページへ
目次へ戻る |