''' groups:定义为分组: 计算公司:输出与输入通道同时分为整数的倍数,一一对应卷积。 表现: groups=2:torch.Size([6, 2, 1, 1]) 如果将group=3时,卷积核大小为torch.Size([6, 2, 1, 1]),即6个2*1*1的卷积核,只需要需要6*2*1*1=12个参数 那么每组计算就只被in_channels/groups=2个channels的卷积核计算,当然这也会将输入分为三份大小为2*H_in*W_in的小输入, 分别与2*1*1大小的卷积核进行三次运算,然后将得到的3个2*H_out*W_out的小输出concat起来得到最后的6*H_out*W_out输出 groups=3:torch.Size([6, 3, 1, 1]) groups=1:torch.Size([6, 6, 1, 1]) 当group=1时,该卷积层需要6*6*1*1=36个参数,即需要6个6*1*1的卷积核. 也就是6个卷积核与6个输入相乘。是6*H_in*W_in的输入整个乘以一个6*1*1的卷积核,乘以6次。 总结:就是输入,输出的深度同时除以groups。 效果:在实际实验中,同样的网络结构下,这种分组的卷积效果是好于未分组的卷积的效果的。 2、为什么要设置groups参数,有什么优点? 为了在GPU上并行计算: 普通的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)