Group Convolution分组卷积 最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行,AlexNet网络结构如下:

如果输入feature map尺寸为 C ∗ H ∗ W C*H*W C∗H∗W,卷积核有N个,输出feature map与卷积核的数量相同也是N,每个卷积核的尺寸为 C ∗ K ∗ K C*K*K C∗K∗K,N个卷积核的总参数量为 N ∗ C ∗ K ∗ K N*C*K*K N∗C∗K∗K。如下图所示,传统卷积方法和分组卷积方法。

Group Convolution,则是对输入feature map进行分组,然后每组分别卷积。其实也就是,原本应该是 C ∗ H ∗ W C*H*W C∗H∗W 的图片,用N个传统的卷积核 C ∗ K ∗ K C*K*K C∗K∗K,就可以生成 N ∗ H ∗ W N*H*W N∗H∗W(假设经过池化,图片尺寸不变)这样其实,是一个通道为C来进行整体卷积生成一个图片。而分组卷积,是一个通道为 C G \frac{C}{G} GC来进行整体卷积生成一个图片。 具体来说就是,假设输入feature map的尺寸仍为 C ∗ H ∗ W C*H*W C∗H∗W,输出feature map的数量为N个,如果设定要分成G个groups,则每组的输入feature map数量为 C G \frac{C}{G} GC,每组的输出feature map数量为 N G \frac{N}{G} GN,每个卷积核的尺寸为 C G ∗ K ∗ K \frac{C}{G}*K*K GC∗K∗K,卷积核的总数仍为N个,每组的卷积核数量为 N G \frac{N}{G} GN,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为 N ∗ C G ∗ K ∗ K N∗\frac{C}{G}*K*K N∗GC∗K∗K,可见,总参数量减少为原来的 1 G \frac{1}{G} G1。
Group Convolution的用途
参考文献 https://www.cnblogs.com/shine-lee/p/10243114.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/213579.html原文链接:https://javaforall.cn