たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

DNN tips: Conv+FCをConvだけで表現

全結合をConvで表現できる.
チャネルのこと深く考えなくて済むので楽.

やり方: kernelサイズを最大、出力channel数を希望出力次元にするだけ

理由:
全面を覆ったらスライドも何も無くなり、単に要素にweight掛けてsumするだけになり、スカラ値が出てくる.
channel方向はそもそも和になってるので、チャネル跨いだ全結合のスカラ出力が得られる.
複数の出力チャネルを用意するとそれぞれ違うweightで全結合される、つまり出力ベクトルの要素になる.
なのでConvでFCを表現できる.
(H, W, C) => (1, 1, Dout) ということ.

FCモジュール使おうとすると (H, W, C) を (HWC,) にreshapeしなきゃいけない.
そんな手間ではないが1DConvしてたのか2DConvしてたのか意識してコード変える必要あったりするので、脳死でも使える1つのtipsとして価値がある.