今天做压缩问题,需要把maxpool融合到fc中,直接做是不可能的。这时候我想到了用conv代替fc,maxpool融合到conv中,这样可以融合。这时候问题出现了。参数量增加。
下面是个例子,输入未[-1,4,4,96]的数据,输出为[-1,500]。
未融合时的参数量
max_pooling2d_5 (MaxPooling2D) (None, 2, 2, 96) 0 concatenate_4[0][0]
__________________________________________________________________________________________________
flatten_2 (Flatten) (None, 384) 0 max_pooling2d_5[0][0]
__________________________________________________________________________________________________
dense_3 (Dense) (None, 500) 192500 flatten_2[0][0]
融合后的参数量
conv2d_27 (Conv2D) (None, 1, 1, 500) 1200500 concatenate_4[0][0]
参数量增加了6.2倍,这个真的很恐怖,我统计了下pool和flatten耗时并不太多。这里就放弃了融合。
conv代替fc,这个好像只是进入大厂的一个考题,应用并不太理想。