4-05 vgg-8, 9, 10層目のEXCEL化
●前層と比べて8,9,10層目は入力画素数が1/4、出力チャネル数が2倍
vgg-7層目のプーリング(ブロック図の左から3番目の"P")が終わると次は8,9,10層目になります。ブロック図にあるようにこれらの層は入力画素数が38x38、出力チャネル数は512になります。 |
●下表から各層のファイルをダウンロード
各層のEXCELファイルを下の表からダウンロードして開きましょう。
・シートは重み係数だけで、その種類は同表のように制限されています。
・入力画像がないので入力CSVをコピーしてVBAを順番に実行していきます。
・シート数節約のために1枚のシートに複数チャネルぶん置きます(inChxx, im2colxx等)。
・38行全部計算させると時間がかかるので最初の4行のみ計算。
・512チャネル全部計算させると時間がかかるので最初の4チャネルのみ計算。
・EXCELで計算した出力とPython(出力CSV)を比較します。
・最後の層だけはプーリングがあります。 |
表4‐05 クリックしてダウンロード
●8層目の重み係数シート
図4‐38はSSD_layer08.xlm(8層目のEXCEL)のW8_Bias(重み係数シート)です。このように係数は8種類(-16,
-4, -2, -1, +1, +2, +4, +16)に制限されています(*1)。またこの層は入力が256チャネルあるので256x9
= 2304行(*2)、出力が512チャネルあるので512列あります。
(*1)2の累乗なのでビットシフトで乗算できる(乗算器の節約)
(*2)9、10層目は入力チャネルが512あるので重み係数シートは512x9 = 4608行になる。 |
図4‐38 8層目のEXCELファイル
●10層目の出力の答え合わせ
図4‐39はModule10の実行結果(Pool001シート)とPythonで計算した10層目のチャネル1(lay10out_001.csv)を比較しています(上の表からダウンロード)。各チャネルピタリ一致することを確認します(*3,4)。8層目、9層目も同様に確認します。
(*3)EXCELでは2行のみ計算(38行全部だと時間がかかるので)。3行目以下を計算させるにはここを参考。
(*4)EXCELではPool00〜03まで計算。Pool04以降を計算させるにはここを参考。 |
図4‐39 10層目チャネル1の計算結果(EXCELとPython)
●各行、各列の最後に0を付け加えてからプーリング
10層目のoutChxxxシート(プーリング前)の画像は本来L2Norm(ブロック図参照)に入力されますが、source1を省略したことによりそのフローは必要なくなりました。 |
目次へ戻る |