nn.Conv2d()参数详解

Pytorch中nn.Conv2d()包含9个参数,分别是:

in_channels(int): Number of channels in the input image

out_channels (int): Number of channels produced by the convolution

kernel_size(int or tuple): Size of the convolving kernel

stride (int or tuple, optional): stride of the convolution. Default: 1

padding (int or tuple, optional)Zero-padding added to both sides of the input, Default: 0

padding_mode(string,optional).Accepted values 'zeros' 'circular' 'reflect' and 'replicate' Default:'zeros'

dilation (int or tuple, optional): Spacing between kernel elements. Default: 1

groups (int, optional): Number of blocked connections from input channels to output channels, Default:1

bias(bool, optional): If "True", adds a learnable bias to the output. Default: "True"

前四个参数就是输入通道数输出通道数,卷积核尺寸和步长,只需要知道输入通道数大小等于卷积核通道数大小,输出通道数大小等于卷积核个数即可

padding参数

代表填充形状,输入张量的填充大小。可以是一个整数,表示在输入的高度和宽度的周围添加的零填充的像素数,或者是一个元组 (h, w),表示在高度和宽度方向上的填充数。默认0填充,就是不填充

padding_mode参数

代表填充内容,可选项有4种:'zeros', 'reflect','replicate' or 'circular',其默认选项为'zeros'

原始图像为

'zeros'即零填充

'reflect'以图像边框为轴做镜像

‘replicate’将矩阵的边缘复制并填充到矩阵的外围。

'circular'就是循环填充再截取

原理

dilation参数

是否采用空洞卷积,这里输入的参数就是膨胀因子的大小

不使用空洞卷积

kernel_size=3, stride=1, padding=0

使用空洞卷积

kernel_size = 3, dilated_ratio = 2, stride = 1, padding = 0

二者的卷积核大小都是一样的(滑窗的实际大小是一样的),但空洞卷积的滑窗(kernel)元素之间是存在一些间隙的,这些间隙在空洞卷积中成为膨胀因子(dilated ratio)。如果 dilated ratio=1 时,空洞卷积就是普通卷积。

为什么要使用空洞卷积?

空洞卷积(膨胀卷积)的相关知识以及使用建议(HDC原则)-CSDN博客

groups参数

是否使用群卷积,是早期计算资源不够使的一种方法,首次出现于Alexnet

详见卷积神经网络group群卷积以及group lasso-CSDN博客

bias参数

卷积是否带偏置,默认为“True”

在卷积神经网络中,卷积层通常使用带有偏置的卷积操作。偏置是一个可学习的参数,它对应于每个输出通道,并且在卷积操作后与输出特征图相加。

偏置的作用是引入模型的偏移能力,它可以在每个通道上添加一个常量值,从而提供了模型的灵活性和表达能力。偏置可以帮助模型更好地拟合数据,特别是当数据的平均值与零偏差之间存在偏移时。例如,对于图像分类任务,不同类别的图像可能具有不同的平均亮度,通过使用偏置可以更好地适应这些差异。

为什么要把偏置去除?【PyTorch细节】卷积后的bias什么时候加,什么时候不加_卷积的bias-CSDN博客

参考资料

PyTorch Conv2d中的四种填充模式解析 - 简书 (jianshu.com)

空洞卷积(膨胀卷积)的相关知识以及使用建议(HDC原则)-CSDN博客

卷积神经网络group群卷积以及group lasso-CSDN博客

【PyTorch细节】卷积后的bias什么时候加,什么时候不加_卷积的bias-CSDN博客

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nn.conv2d是PyTorch中用于实现二维卷积操作的函数。它是torch.nn模块中的一部分,并且是构建卷积神经网络的常用操作之一。 函数签名如下: ```python torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True) ``` 参数解释: - in_channels:输入张量的通道数(例如,RGB图像的通道数为3) - out_channels:输出张量的通道数,即卷积核的数量,决定了卷积层的输出特征图的深度 - kernel_size:卷积核的大小,可以是一个整数(表示正方形卷积核)或一个元组(表示矩形卷积核) - stride:卷积操作的步长,默认为1 - padding:输入张量周围要填充的像素数,默认为0。padding可以用来保持输入输出尺寸相同,以允许更多的感受野。 - dilation:卷积核元素之间的间隔,默认为1。dilation可以用来增加卷积核的感受野,捕捉更大范围的上下文信息。 - groups:将输入和输出连接到一起的输入组和输出组的数量,默认为1。当groups大于1时,将使用分组卷积。 - bias:是否使用偏置项,默认为True。偏置项是可学习的参数,用于在卷积操作后添加一个常数偏移。 除了这些参数之外,nn.conv2d还有其他一些可选参数,如padding_mode(填充模式)、transposed(是否使用转置卷积)等,可以根据具体需求进行设置。 nn.conv2d函数的调用会返回一个卷积层对象,可以通过调用此对象的forward方法来进行卷积操作。输入张量会通过卷积核进行卷积计算,生成输出特征图。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值