📜  conv2d 默认步幅 (1)

📅  最后修改于: 2023-12-03 15:30:05.560000             🧑  作者: Mango

PyTorch中的Conv2d模块

在深度学习中,卷积神经网络(Convolutional Neural Network,CNN)常常会使用卷积层来对输入特征进行提取和转换。PyTorch中提供了nn.Conv2d模块来构建卷积层。

nn.Conv2d的默认参数

nn.Conv2d的构造函数中有若干个参数,下面我们主要介绍其中和卷积过程相关的参数。

in_channels

in_channels表示输入特征图的通道数量。例如,如果输入特征图的形状为(N, C, H, W),其中C就是in_channels

out_channels

out_channels表示输出特征图的通道数量。例如,如果输出特征图的形状为(N, C, H, W),其中C就是out_channels

kernel_size

kernel_size表示卷积核(filter)的大小。可以是一个int,如3,也可以是一个元组,如(3, 3)

stride

stride表示卷积核对输入特征图滑动的步长。可以是一个int,如1,也可以是一个元组,如(2, 2)。默认值为1

padding

padding表示在输入特征图的边缘添加的虚拟元素数量。可以是一个int,如1,也可以是一个元组,如(1, 1)。默认值为0

dilation

dilation表示卷积核内部的跨度。可以是一个int,如2,也可以是一个元组,如(2, 2)。默认值为1

示例

下面我们看一个简单的例子:

import torch
import torch.nn as nn

# 构造一个卷积层,输入特征图有3个通道,输出特征图有16个通道,
# 卷积核大小为3x3,卷积时以1的步长滑动,在边缘填充1个像素。
conv = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)

# 构造一个输入特征图,形状为(N, C, H, W)=(1, 3, 32, 32)
x = torch.randn(1, 3, 32, 32)

# 将输入特征图输入卷积层
y = conv(x)

# 输出特征图的形状为(N, C, H, W)=(1, 16, 32, 32)
print(y.shape)

在这个例子中,我们构造了一个卷积层conv,输入特征图有3个通道,输出特征图有16个通道,卷积核大小为3x3,卷积时以1的步长滑动,在边缘填充1个像素。

我们也构造了一个输入特征图x,形状为(1, 3, 32, 32),即一个通道数量为3,尺寸为32x32的特征图。将其输入到我们构造的卷积层中,输出特征图的形状为(1, 16, 32, 32),即一个通道数量为16,尺寸为32x32的特征图。

总结

nn.Conv2d是PyTorch中的卷积层模块,可以用来对输入特征图进行卷积。其中的一些参数用来控制卷积的过程,比如卷积核大小、步长以及填充等。默认情况下,nn.Conv2d的步长为1