torch里的分组卷积

torch里的分组卷积普通卷积如果输入特征的通道是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个参数分组卷

大家好,欢迎来到IT知识分享网。torch里的分组卷积"

普通卷积

如果输入特征的通道是 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

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信