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つ増やす
最初のページへ
目次へ戻る |