池化层
在卷积网络中,通常会在卷积层之间增加池化层,用来降低特征图的参数数量,提升计算速度,增加感受野。池化可以使模型更加关注全局特征,而非局部特征,这种降维的过程可以保留一些重要的特征信息,提升容错能力,并且还能在一定程度上防止过拟合。
在物体检测中,常用的池化有最大值池化和平均值池化。池化层有两个主要的输入参数,即核尺寸与步长。下图所示为一个核尺寸与步长都为2的最大值池化过程,以左上角为例,56、12、52、和3进行最大值池化,保留56。
用Pytorch实现池化层:
import torch
from torch import nn
max_pooling = nn.MaxPool2d(2, stride=2)
aver_pooling = nn.AvgPool2d(2, stride=2)
input = torch.randn(1, 1, 4, 4)
# 调用最大值池化与平均值池化,可以看到size从[1, 1, 4, 4]变成了[1, 1, 2, 2]
>>> max_pooliing(input)
>>> aver_pooling(input)