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博客

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐