nn.Conv2d 是 2D 卷积层,核心参数:

1
2
3
4
5
6
7
nn.Conv2d(
    in_channels,    # 输入通道数 (如 RGB 图像 = 3)
    out_channels,   # 输出通道数 (卷积核数量)
    kernel_size,    # 卷积核大小 (如 3×3 或 (3, 3))
    stride=1,       # 步长
    padding=0,      # 填充
)

最简单的例子:单通道输入,单卷积核

┌─────────────────────────────────────────────────────────────────────────────────┐
│                    最简单的卷积:5×5 输入,3×3 卷积核                            │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  输入 (5×5):                 卷积核 (3×3):              输出 (3×3):             │
│  ┌───┬───┬───┬───┬───┐      ┌───┬───┬───┐              ┌───┬───┬───┐          │
│  │ 1 │ 2 │ 3 │ 0 │ 1 │      │ 1 │ 0 │-1 │              │ ? │ ? │ ? │          │
│  ├───┼───┼───┼───┼───┤      ├───┼───┼───┤              ├───┼───┼───┤          │
│  │ 0 │ 1 │ 2 │ 3 │ 0 │      │ 1 │ 0 │-1 │              │ ? │ ? │ ? │          │
│  ├───┼───┼───┼───┼───┤      ├───┼───┼───┤              ├───┼───┼───┤          │
│  │ 1 │ 2 │ 1 │ 0 │ 1 │      │ 1 │ 0 │-1 │              │ ? │ ? │ ? │          │
│  ├───┼───┼───┼───┼───┤      └───┴───┴───┘              └───┴───┴───┘          │
│  │ 0 │ 1 │ 2 │ 3 │ 2 │                                                         │
│  ├───┼───┼───┼───┼───┤      这个卷积核是一个                                    │
│  │ 1 │ 0 │ 1 │ 2 │ 1 │      "垂直边缘检测器"                                    │
│  └───┴───┴───┴───┴───┘                                                         │
│                                                                                 │
│  输出尺寸 = (输入尺寸 - 卷积核尺寸) / 步长 + 1                                  │
│          = (5 - 3) / 1 + 1 = 3                                                 │
│                                                                                 │
└─────────────────────────────────────────────────────────────────────────────────┘