PyTorch学习之torch.nn.functional.conv2d函数
一、简介
torch.nn.functional.conv2d
是 PyTorch 中用于进行二维卷积操作的函数。卷积操作是深度学习中卷积神经网络(CNN)的核心部分,用于提取图像特征,常见于图像分类、目标检测和语义分割等任务中。
二、基本语法
torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)
三、参数说明
input
(Tensor): 输入张量,形状为(N, C_in, H, W)
,其中N
是批量大小,C_in
是输入通道数,H
是高度,W
是宽度。weight
(Tensor): 卷积核权重,形状为(C_out, C_in // groups, kH, kW)
,其中C_out
是输出通道数,kH
是卷积核高度,kW
是卷积核宽度。bias
(Tensor, 可选): 偏置,形状为(C_out)
。如果为None
,则不添加偏置。stride
(int 或 tuple, 可选): 卷积步长,默认值为1
。padding
(int 或 tuple, 可选): 输入的每一边填充的大小,默认值为0
。dilation
(int 或 tuple, 可选): 卷积核元素之间的间距,默认值为1
。groups
(int, 可选): 将输入分组,默认值为1
。groups
的值大于1
时,相当于对输入进行组卷积。- 默认是1是因为我们一般对图像的卷积是将图像的RGB通道卷积后合并。
- 如果你卷积后不想合并通道,即卷积后仍然是彩色图像,groups应该设置为3
四、返回值
返回一个张量,形状为 (N, C_out, H_out, W_out)
,表示卷积后的输出。
五、示例
示例 1: 基本卷积操作
import torch
import torch.nn.functional as F
# 创建一个形状为 (1, 1, 5, 5) 的输入张量
input = torch.tensor([[[[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]