关于conv代替fc操作并不可取

今天做压缩问题,需要把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,这个好像只是进入大厂的一个考题,应用并不太理想。 

猜你喜欢

转载自blog.csdn.net/weixin_39875161/article/details/106295664