【Pytorch】三维卷积 nn.Conv3d 用法

nn.Conv3d 是 PyTorch 中实现三维卷积操作的类。

1.维度说明

其输入和输出的维度如下:

输入维度:

输入张量的维度应为 (N, C_in, D, H, W),其中:

  • N: 批量大小 (batch size),即一批输入数据中包含的样本数量。
  • C_in: 输入通道数 (number of input channels),即输入数据的通道数量,例如彩色图像通常有3个通道(红、绿、蓝)。
  • D: 输入数据的深度 (depth)。
  • H: 输入数据的高度 (height)。
  • W: 输入数据的宽度 (width)。

输出维度:

输出张量的维度为 (N, C_out, D_out, H_out, W_out),其中:

  • N: 批量大小 (batch size),与输入张量的批量大小相同。
  • C_out: 输出通道数 (number of output channels),即经过卷积操作后输出特征图的通道数。这个值取决于你在 nn.Conv3d 中设置的 out_channels 参数。
  • D_out: 输出数据的深度 (depth)。
  • H_out: 输出数据的高度 (height)。
  • W_out: 输出数据的宽度 (width)。

输出数据的深度、高度和宽度可以根据以下公式计算:

D_out = floor((D_in + 2 * padding[0] - dilation[0] * (kernel_size[0] - 1) - 1) / stride[0] + 1)
H_out = floor((H_in + 2 * padding[1] - dilation[1] * (kernel_size[1] - 1) - 1) / stride[1] + 1)
W_out = floor((W_in + 2 * padding[2] - dilation[2] * (kernel_size[2] - 1) - 1) / stride[2] + 1)

其中,paddingdilationkernel_sizestride 分别对应 nn.Conv3d 中的相应参数。注意,这些参数可以是单个整数(表示在所有轴上相同)或包含3个整数的元组(分别表示深度、高度和宽度方向的值)。如果你使用的是元组,则上述公式中的索引 [0][1][2] 分别表示深度、高度和宽度方向的值。

2. 使用说明

nn.Conv3d 函数的参数如下:

  1. in_channels (int): 输入特征图的通道数。这应该与要传递给该层的输入张量的通道数匹配。

  2. out_channels (int): 输出特征图的通道数。这是卷积操作后得到的输出张量的通道数。

    扫描二维码关注公众号,回复: 16181633 查看本文章
  3. kernel_size (int or tuple): 三维卷积核的大小。可以是单个整数,表示卷积核的深度、高度和宽度相同,或者是一个包含三个整数的元组,分别表示卷积核的深度、高度和宽度。

  4. stride (int or tuple, optional): 卷积操作的步长。步长是在输入特征图上滑动卷积核时沿深度、高度和宽度方向移动的单位数。可以是单个整数,表示深度、高度和宽度的步长相同,或者是一个包含三个整数的元组,分别表示深度、高度和宽度的步长。默认值是1。

  5. padding (int or tuple, optional): 输入特征图的零填充大小。可以是单个整数,表示深度、高度和宽度方向的填充大小相同,或者是一个包含三个整数的元组,分别表示深度、高度和宽度方向的填充大小。默认值是0。

  6. dilation (int or tuple, optional): 卷积核中元素的间距。可以是单个整数,表示深度、高度和宽度方向的间距相同,或者是一个包含三个整数的元组,分别表示深度、高度和宽度方向的间距。默认值是1。较大的间距值会导致卷积核在输入特征图上的覆盖范围更大,但实际卷积核的大小不变。

  7. groups (int, optional): 控制输入和输出通道之间的连接。groups 的默认值是1,表示所有输入通道都与所有输出通道连接。设为其他值将分割输入和输出通道,以减少计算量。例如,如果 in_channels 为4,out_channels 为8,groups 为2,则前2个输入通道与前4个输出通道连接,后2个输入通道与后4个输出通道连接。

  8. bias (bool, optional): 如果设置为 True,则向卷积操作的输出添加偏置。默认值是 True

示例:

# 创建一个 nn.Conv3d 层,输入通道数为3,输出通道数为6,卷积核大小为4,步长为2,零填充大小为1
conv3d = nn.Conv3d(in_channels=3, out_channels=6, kernel_size=4, stride=2, padding=1)

猜你喜欢

转载自blog.csdn.net/qq_56199570/article/details/129866422