大家好,欢迎来到IT知识分享网。
普通卷积
如果输入特征的通道是 32,希望输出特征的通道是 64,对于 3*3 的普通卷积来说,卷积层设置为:
conv = torch.nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3)
我们查看卷积核的参数量
print(conv.weight.shape) # torch.size([64,32,3,3])
所以普通卷积的参数量是 64 × \times × 32 × \times × 3 × \times × 3 = 18432 个参数
分组卷积
同样输入特征的通道是 32,希望输出特征的通道是 64,如果使用分组卷积,卷积层设置为:
conv = torch.nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, groups=8)
我们查看卷积核的参数量
print(conv.weight.shape) # torch.size([64,4,3,3]) 这里 4 表示 in_channels/groups = 4
所以分组卷积的参数量是 64 × \times × 4 × \times × 3 × \times × 3 = 2304 个参数, 同样的输出通道,参数减小了8倍
为了达到同样的输出效果,分组卷积的做法是:
- 把32个输入通道分为8组,每组4个通道
- 把64 × \times × 4 × \times × 3 × \times × 3卷积核分为8组,每组参数量是 8 × \times × 4 × \times × 3 × \times × 3
- 这样8组输入和8组卷积核一一对应做普通卷积,就可以得到8组输出通道为8的输出特征,将8组输出结果拼接在一起,就可以得到64个通道的输出结果
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23115.html