3‐02 1層目のEXCEL化(続き)

●VBAでシートを自動生成

 im2col00, im2col01, im2col02と3シート生成されます。これらはCh00, Ch01, Ch02の画素を784×9の行列に展開したものです(*1)。こうすることによりフィルタ係数との「畳み込み」が「行列の乗算」になります。

(*1)このようにカーネルは3x3なので9列、カーネルの動く範囲は28x28なので784行になる

図3-10 行列乗算に備えて並び替え

●Module01の次はModule02

 次はVBAのModule02を開き、マクロを実行します。

図3‐11 Module02を開いて実行

●行列乗算のためのVBAマクロ

 すると新たにシートが3枚現れます。これらは行列乗算の結果です。

図3‐12 乗算の結果784行×16列に

●行列乗算する際の行と列の関係

 im2col00は784行×9列あり、それとW1_Biasの上から9行×16列を乗算します(図3‐13)。im2col00_W1はその結果で、784行×16列になります。

 im2col01にはW1_Biasの10行目〜18行目、im2col02にはW1_Biasの19行目〜27行目が掛かります(結果的にこのような畳み込みになる)


図3‐13 行列の形状の変化

●Moduleを順番に実行する

 さらにVBAのModule03を実行すると図3‐14のようにim2colAll_W1が現れます。これはim2col00_W1〜im2col02_W1を足し込んだものです。


図3‐14 3つのシートを足し込んで1つのシートに

次のページへ

目次へ戻る