F.conv2D函数

本文介绍了PyTorch中的卷积操作函数torch.nn.functional.conv2d,重点解析了输入参数input和weight的作用。通过实例展示了当使用3x3滤波器和相同步长时,如何从4通道的输入转换为8通道的输出,输出形状为(1,8,3,3)。理解这两个关键参数对于掌握卷积神经网络的构建至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数原型

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) 

参数:

在这里插入图片描述这里仅仅解释两个主要的参数。
以一个例子说明:

# With square kernels and equal stride
filters = torch.randn(8, 4, 3, 3)
inputs = torch.randn(1, 4, 5, 5)
out=F.conv2d(inputs, filters)

out的shape为(1,8,3,3)
注意input和weight的参数含义,就能清楚了。

### 使用 PyTorch 中的 `nn.Conv2d` 函数 在 PyTorch 的 `nn` 模块中,`nn.Conv2d()` 类用于实现二维卷积操作。此类通常应用于图像处理任务,如特征提取等。 定义一个简单的神经网络来展示 `nn.Conv2d` 的基本用法: ```python import torch import torch.nn as nn class SimpleConvNet(nn.Module): def __init__(self): super(SimpleConvNet, self).__init__() # 定义一个具有特定参数设置的 Conv2D 层 # 输入通道数为 3(RGB 图像),输出通道数为 64, # 卷积核大小为 4×4 方形窗口,步幅设为 2,边缘补全宽度定为 1 self.conv_layer = nn.Conv2d( in_channels=3, out_channels=64, kernel_size=(4, 4), stride=2, padding=1 ) def forward(self, input_tensor): output = self.conv_layer(input_tensor) return output # 创建该网络的一个实例并打印其结构 net = SimpleConvNet() print(net) # 打印卷积层权重和偏置项的信息 print("Weights of conv layer:\n", net.conv_layer.weight.data) print("\nBias terms of conv layer:\n", net.conv_layer.bias.data) ``` 上述代码展示了如何创建自定义的卷积神经网络类,并初始化了一个包含单个 `nn.Conv2d` 层的对象。通过调用 `.forward()` 方法可以执行前向传播过程[^1]。 关于 `padding_mode` 参数的选择,默认情况下采用的是零填充 (`'zeros'`),除此之外还有反射填充 (`'reflect'`)、复制边界(`'replicate'`)以及循环填充(`'circular'`)三种模式可供选择[^3]。 #### 关于 `nn.Conv2d` 和 `functional.conv2d` 的区别 值得注意的是,在构建模型时可以选择使用 `torch.nn.Conv2d` 或者 `torch.nn.functional.conv2d` 来完成二维卷积运算。两者的主要差异在于前者属于类形式而后者则是函数形式;因此当希望将卷积操作作为一个持久化的组件加入到更复杂的架构之中时推荐选用 `nn.Conv2d`[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值