6.5 池化层

发布时间 2023-07-31 11:48:49作者: Ann-

首先说为什么要有池化层。池化层的主要作用是缓解卷积层对位置的敏感性。意思是:卷积层是用卷积核对某一个小范围内(如3*3)的像素进行计算,如果相机拍摄导致某一个或某几个像素发生了偏移,此时,卷积层对这种信息是敏感的。而最大池化和平均池化可以缓解这种卷积层对位置的敏感性。

 注意:多输入通道多输出通道的池化层,其输入通道数与输出通道数相等,池化操作在每个通道上分别运作。

 

pytorch中的池化层

pytorch中的最大池化层代码为nn.MaxPool2d(),它的第一个参数为窗口大小,如nn.MaxPool2d(3)表示3*3的池化窗口,nn.MaxPool2d((2,3))表示2*3的池化窗口。还可以将padding以及stride作为它的参数。下面举一个例子,我们首先创建一个4D张量X:

import torch
from torch import nn

X = torch.arange(16,dtype=torch.float32).reshape(1,1,4,4)
print(X)

X:

 我们将窗口尺寸为2,步长为2的池化作用在X上,看一看输出结果:

net = nn.MaxPool2d(2,stride=2)
print(net(X))

输出:

 我们加一圈padding,再将尺寸为3,步长为3的池化作用在X上,看一看输出结果:

net = nn.MaxPool2d((3,3),padding=1,stride=3)
net(X)

输出: