1. torch.nn模块中的池化层简介
池化操作的一个重要目的就是对卷积后得到的特征进行进一步处理(主要是降维),从而缓解计算时内存的压力。池化会选取一定大小的区域,将该区域内的像素值使用一个代表元素表示。如果使用平均值代替,称为平均值池化,如果使用最大值代替则称为最大值池化。这两种池化方式示意图如下图1所示。
在PyTorch中,提供了多种池化的类,分别是最大值池化(MaxPool)、最大值池化的逆过程(MaxUnPool)、平均值池化(AvgPool)、自适应池化(AdaptiveMaxPool,AdaptiveAvgPool) 等。并且均提供了一维、二维和三维的池化操作。
2. 池化的调用方式
PyTorch中常用的池化操作有torch.nn.MaxPool1d()
、torch.nn.MaxPool2d()
、torch.nn.MaxPool3d()
、torch.nn.MaxUnPool1d()
、torch.nn.MaxUnPool2d()
、torch.nn.MaxUnPool3d()
、torch.nn.AvgPool1d()
、torch.nn.AvgPool2d()
、torch.nn.AvgPool3d()
、torch.nn.AdaptiveMaxPool1d()
、torch.nn.AdaptiveMaxPool2d()
、torch.nn.AdaptiveMaxPool3d()
、torch.nn.AdaptiveAvgPool1d()
、torch.nn.AdaptiveAvgPool2d()
、torch.nn.AdaptiveAvgPool3d()
。
以torch.nn.MaxPool2d()
池化操作相关参数的应用为例,其使用方法如下:
torch.nn.MaxPool2d(kernel_size,
stride=None,
padding=0,
dilation=1,
return_indices=False,
ceil_mode=False)
池化参数 | 说明 |
---|---|
kernel_size | 最大池化的窗口大小(整数或数组) |
stride | 最大池化窗口移动的步长,默认值是kernel_size(整数或数组,正数) |
padding | 输入的每一条边补充0的层数(整数或数组,正数) |
dilation | 一个控制窗口中元素步幅的参数(整数或者数组,正数),默认为1 |
return_indices | 如果为True,则返回输出最大值的索引,便于之后的torch.nn.MaxPool2d 操作 |
ceil_mode | 如果为True,计算输出信号大小时,会使用向上取整,默认是向下取整 |
torch.nn.MaxPool2d()
输入的张量为 ( N , C i n , H i n , W i n ) (N,C_{in},H_{in},W_{in}) (N,Cin,Hin,Win),输出张量为 ( N , C o u t , H o u t , W o u t ) (N,C_{out},H_{ou