nn.Conv2d函数
时间: 2025-04-21 10:45:43 AIGC 浏览: 32
### 使用 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]。
阅读全文
相关推荐


















