Conv2D卷积核形状详解

直接看例子

import torch.nn as nn

conv = nn.Conv2d(3, 64, kernel_size=3)
print(conv.weight.shape)  # [64, 3, 3, 3]

这4个数字分别是什么?

记忆方法:出入高宽

[64,  3,  3,  3]
 ↓    ↓   ↓   ↓
出   入  高  宽
  • :输出通道数
  • :输入通道数
  • :卷积核高度
  • :卷积核宽度

生活化理解

把卷积操作想象成"照片滤镜工厂":

nn.Conv2d(3, 64, 3)  # 一个滤镜工厂
  • 工厂里有64个不同的滤镜
  • 每个滤镜都能处理彩色照片(3通道RGB)
  • 每个滤镜都是3×3大小

所以权重就是:64个滤镜,每个都是3×3×3的立体结构。

多个例子

# 黑白照片处理
Conv2d(1, 16, 5)  → [16, 1, 5, 5]

# 彩色照片处理  
Conv2d(3, 64, 3)  → [64, 3, 3, 3]

# 深层特征处理
Conv2d(64, 128, 1) → [128, 64, 1, 1]

看出规律了吗?第一个数字永远是输出通道数,第二个数字永远是输入通道数。

为什么要这样?

处理RGB图片时:

  • 输入有3层(红绿蓝)
  • 每个卷积核必须同时处理这3层
  • 要输出64个特征,就需要64个卷积核
  • 每个卷积核的形状:[输入层数, 高, 宽] = [3, 3, 3]
  • 总权重形状:[卷积核个数, 输入层数, 高, 宽] = [64, 3, 3, 3]

验证公式

Conv2d(输入通道, 输出通道, 核大小)
权重形状 = [输出通道, 输入通道, 核高, 核宽]

验证:

Conv2d(3, 64, 3)     → [64, 3, 3, 3] ✓
Conv2d(1, 32, 5)     → [32, 1, 5, 5] ✓  
Conv2d(16, 8, (2,4)) → [8, 16, 2, 4] ✓

记住这一点

Conv2D的权重形状就是:[几个滤镜, 输入几层, 滤镜多高, 滤镜多宽]

用"出入高宽"四个字记忆,基本不会错。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容