池化层通过减少特征图的尺寸来降低计算量和参数数量,同时增加模型的平移不变性和鲁棒性。汇聚层的主要优点之一是减轻卷积层对位置的过度敏感。
1 最大汇聚层、平均汇聚层
汇聚层和卷积核一样,是在输入图片上进行滑动计算,但是不同于卷积层的互相关运算,汇聚层的运算通常是计算汇聚窗口中所有元素的最大值或平均值。
1.1 最大汇聚层
上面操作的代码如下:
python
import torch
from torch import nn
X = torch.tensor([[[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]]])
# 设置一个2*2的最大池化层
max_pooling=nn.MaxPool2d(kernel_size=2,stride=1)
# 执行卷积操作
y = max_pooling(X)
print(y.shape)
print(y)
运行结果
1.2 平均汇聚层
python
import torch
from torch import nn
X = torch.tensor([[[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]]])
# 设置一个2*2的最大池化层
avg_pooling=nn.AvgPool2d(kernel_size=2,stride=1)
# 执行卷积操作
y = avg_pooling(X)
print(y.shape)
print(y)
运行结果
2 填充和步幅
torch自带的汇聚层函数也可以进行填充和步幅设置。
2.1 平均汇聚层
AvgPool2d 的基本用法
参数说明
- kernel_size: 池化窗口的大小,可以是一个整数或一个元组 (height, width)。
- stride: 池化窗口的移动步幅,默认值为 kernel_size。
- padding: 输入特征图的边缘填充大小,默认值为 0
- count_include_pad: 是否在计算平均值时包括填充的零,默认值为 True。
- divisor_override: 用于除法的自定义除数,默认值为 None,表示使用窗口大小作为除数。
2.2 最大池化层
MaxPool2d 的基本用法
参数说明
- kernel_size: 池化窗口的大小,可以是一个整数或一个元组 (height, width)。
- stride: 池化窗口的移动步幅,默认值为 kernel_size。
- padding: 输入特征图的边缘填充大小,默认值为 0。
- dilation: 池化窗口的膨胀系数,默认值为 1。
- return_indices: 是否返回最大值的索引,默认值为 False。
- ceil_mode: 是否使用向上取整的方式计算输出尺寸,默认值为 False。
3 多个通道
在处理多通道输入数据时,汇聚层的输出通道数与输入通道数相同。