pytorch的conv2d函数groups分组卷积使用及理解

                

'''
    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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Conv2d函数PyTorch中构建卷神经网络的常用函数之一,其参数如下: - in_channels: 输入通道数,即输入数据的通道数,例如彩色图像的通道数为3。 - out_channels: 输出通道数,即此卷层中卷核的数量,也就是输出数据的通道数。 - kernel_size: 卷核大小,可以是一个整数表示正方形卷核,也可以是一个元组表示长方形卷核 (kernel_height, kernel_width)。 - stride: 卷核移动步长大小,可以是一个整数表示正方形步长,也可以是一个元组表示长方形步长 (stride_height, stride_width)。 - padding: 填充大小,可以是一个整数表示正方形填充,也可以是一个元组表示长方形填充 (padding_height, padding_width)。填充是指在输入数据周围增加0值,以便于卷核更好的处理边缘像素。 - dilation: 空洞卷大小,可以是一个整数表示正方形空洞卷,也可以是一个元组表示长方形空洞卷 (dilation_height, dilation_width)。空洞卷是通过在卷核中增加0值来实现像素之间的跨步卷,可以扩大视野,并且减少网络深度。 - bias: 是否加入偏置参数,默认为True,即加入偏置。 - padding_mode: 填充模式,当填充不为0时可以设置该参数,可以是"zeros"、"reflect"或"replicate"。 - groups: 分组,该参数指定将输入通道分成几个组进行卷,当等于输入通道数时,表示没有分组

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值