【PyTorch细节】卷积后的bias什么时候加,什么时候不加

我们在进行写代码的时候,有时候会发现有的m = nn.Conv2d(16, 33, 3, stride=2,bias=False) ,biasFalse,而默认的是True。为啥呢?是因为一般为False的时候,nn.Conv2d()后面通常接nn.BatchNorm2d(output)
是因为BN里面有一个关键操作,
在这里插入图片描述
其中x1 = x0 * w0 + b0,而E[x1] = E[x0*w0] + b0, 所以对于分子而言,加没加偏置,没有影响;而对于下面分母而言,因为Var是方差操作,所以也没有影响(为什么没影响,回头问问你的数学老师就知道了)。所以,卷积之后,如果要接BN操作,最好是不设置偏置,因为不起作用,而且占显卡内存。

### PyTorch 中分组卷积的使用方法 在深度学习框架PyTorch中,`torch.nn.Conv2d` 提供了一个参数 `groups` 来实现分组卷积。当设置 `groups=1` 时,执行的是标准卷积;而当 `groups>1` 并且输入通道数和输出通道数都能被 `groups` 整除的情况下,则会进行分组卷积[^1]。 对于每一个单独的组而言,其行为类似于普通的二维卷积层,只不过此时仅作用于分配给该组的那一部分输入通道上。具体来说,在每组内部,所有输入通道的数据都会参与计算以生成对应数量的新特征图作为输出的一部分。这种机制允许模型在同一层内并行处理多个子集的信息流,从而有助于提高效率或增强表达能力。 #### 实现示例 下面给出一段Python代码用于展示如何利用PyTorch创建具有两个独立路径(即两组)的简单网络结构: ```python import torch from torch import nn class GroupedConv(nn.Module): def __init__(self, in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True): super(GroupedConv, self).__init__() # 定义一个带有指定数目分组的卷积层 self.conv = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding, dilation=dilation, groups=groups, bias=bias) def forward(self, x): return self.conv(x) if __name__ == "__main__": batch_size = 4 # 批量大小 channels_in = 3 # 输入图片的颜色通道数 (RGB) height_width = 6 # 假设正方形图像的高度宽度均为6像素 input_tensor = torch.randn(batch_size, channels_in, height_width, height_width) # 随机初始化一批次张量 grouped_conv_layer = GroupedConv(channels_in * 2, channels_in * 4, 3, groups=2) # 创建一个有两组的卷积层实例 output_tensor = grouped_conv_layer(input_tensor.repeat(1, 2, 1, 1)) # 将输入重复两次使得能够匹配所需的输入通道数 print(output_tensor.size()) # 输出形状应为 [batch_size, out_channels, H_out, W_out] ``` 这段程序首先定义了一个名为 `GroupedConv` 的自定义模块类,它继承自 `nn.Module` 并封装了单个 `nn.Conv2d` 层。接着构建了一种特殊情况下的测试场景——其中包含四个样本批次、三个颜色通道以及边长为六的小型灰度级图像,并通过调用上述构造器来建立含有双路分支架构的一维空间变换算子。最后打印出经过此运算后的最终结果尺寸信息以便验证正确性[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gorgeous(๑>؂<๑)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值