关于pytorch中nn.conv中的参数

关于pytorch中nn.conv中的参数
之前一直是用的tensor flow +keras,最近刚转为pytorch,发现torch中的卷积参数和tensorflow中的有点不同,特来记录下,以下是官网中的解释:

关于pytorch中nn.conv中的参数
和tensorflow不同,in_channels和out_channels分别是输入和输出的通道数,stride步长以及padding填充和keras是一样的,groups 这个参数很有意思,主要是做了类似分组卷积的工作,借助另一篇博客的解释:
如果你的input_size = [1,6,1,1], 如果你令
conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, stride=1, padding=0, groups=?,
bias=False)
当groups=1时,即为默认的卷积层,则conv.weight.data.size为[6,6,1,1],实际上共有6 * 6=36个参数,若group=3时,则每组计算只有out_channel/groups = 2个channel参与,故每一组卷积层的参数大小为[6,2,1,1],每一组共有6 * 2=12个参数,相当于每一组被重复用了3次(即group)次,最后再contact.
另外,在实际实验中,同样的网络结构下,这种分组的卷积效果是好于未分组的卷积的效果的。