池化与下采样
用局部最大值、平均值或自适应汇总缩小空间尺寸。
学习目标
- 同一窗口的最大值与平均值
- 池化层有多少可训练参数?
- 说明:池化会丢失空间细节;上采样不能自动逆转这种多对一映射。
为什么需要这个概念
池化按窗口对特征图取最大值、平均值等统计,通常独立作用于每个样本和每个通道。全局或自适应池化则直接约定输出空间尺寸。
学习前需要掌握
背景与问题
局部特征提取后,网络常需要缩小空间网格,以降低计算并聚合邻近响应。池化提供不含可学习核的局部汇总,但它也会丢失细节。
概念定义
池化按窗口对特征图取最大值、平均值等统计,通常独立作用于每个样本和每个通道。全局或自适应池化则直接约定输出空间尺寸。
直观理解
最大池化回答“这一片有没有强响应”,平均池化回答“这一片整体响应多强”。两个问题在孤立尖峰和均匀纹理上会给出不同结果。
核心原理
MaxPool 把窗口中的最大元素传到下一层,反向梯度主要流向被选中的位置。AvgPool 将响应平均,梯度也按参与元素分配。窗口、stride、padding 和是否计入 padding 会影响数值及输出尺寸。
普通池化不混合不同通道,不改变通道数。2×2、stride=2 通常把偶数高宽减半;奇数尺寸和 ceil_mode 需要单独计算。自适应平均池化到 1×1 可把任意空间网格压成每通道一个数。
池化提供有限的局部位置鲁棒性,但不保证全局平移不变。下采样可能移走细小目标,分割等任务常需跳接或高分辨率分支保留位置证据。
数学表达
核心公式
池化按窗口对特征图取最大值、平均值等统计,通常独立作用于每个样本和每个通道。全局或自适应池化则直接约定输出空间尺寸。
变量含义
Ω局部窗口c通道
计算步骤
- 1最大池化选取 3。
- 2平均池化计算 (1+3+2+0)/4=1.5。
代码对应位置
示例 1同一窗口的最大值与平均值的最小验证:使用完整构造输入核对同一窗口的最大值与平均值,输出只表示本例计算。
变量解释
| 变量 | 含义 |
|---|---|
Ω | 局部窗口 |
c | 通道 |
完整数值示例
同一窗口的最大值与平均值
已知条件
- 窗口为第一行 (1,3)、第二行 (2,0)
计算步骤
- 最大池化选取 3。
- 平均池化计算 (1+3+2+0)/4=1.5。
计算结果
最大池化输出 3,平均池化输出 1.5,形状均为 (1,1,1,1)。
处理前后对比
- 池化会丢失空间细节;上采样不能自动逆转这种多对一映射。
同一窗口的最大值与平均值
若一个窗口只有一个异常亮点,MaxPool 会完全保留它;AvgPool 会把它和周围值一起平均。这可能有助于找强边缘,也可能放大噪声,需要按任务验证。
输出只剩一个数,无法从它唯一恢复原来四个位置。上采样可以增大网格,却不会凭空补回被池化删除的信息。
计算与实现步骤
- 最大池化选取 3。
- 平均池化计算 (1+3+2+0)/4=1.5。
代码实现
示例 1
同一窗口的最大值与平均值的最小验证
example_01.py用途:使用完整构造输入核对同一窗口的最大值与平均值,输出只表示本例计算。
import torch
from torch import nn
x = torch.tensor([[[[1., 3.], [2., 0.]]]])
for name, pool in [("max", nn.MaxPool2d(2)), ("avg", nn.AvgPool2d(2))]:
y = pool(x)
print(f"{name}: value={y.item():.1f} shape={tuple(y.shape)}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
使用完整构造输入核对同一窗口的最大值与平均值,输出只表示本例计算。
y- 目标标签或连续目标值。
Step 1 · 1–6 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
import torch
from torch import nn
x = torch.tensor([[[[1., 3.], [2., 0.]]]])
for name, pool in [("max", nn.MaxPool2d(2)), ("avg", nn.AvgPool2d(2))]:
y = pool(x)
print(f"{name}: value={y.item():.1f} shape={tuple(y.shape)}")预期输出或运行结果
max: value=3.0 shape=(1, 1, 1, 1) avg: value=1.5 shape=(1, 1, 1, 1)
常见错误 · 4 条
- 池化过多尺寸归零
- 以为池化可学习
- 忽略边界公式
- 确认样本轴、特征轴以及 X 与 y 的第一维完全对应。
实际应用
- 分类网络的空间下采样
- 全局平均池化生成通道摘要
常见错误
- 池化过多尺寸归零
- 以为池化可学习
- 忽略边界公式
常见问题
池化层有多少可训练参数?
普通最大池化和平均池化没有可训练核参数,但仍有窗口和步长等超参数,并会影响计算与梯度。
这个示例能说明什么边界?
池化会丢失空间细节;上采样不能自动逆转这种多对一映射。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。