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_{out},W_{out}) (N,

本文详细介绍了torch.nn模块中的池化层,包括最大值池化、平均值池化和自适应平均值池化,讨论了它们的作用、调用方式以及在图像处理中的应用。通过实例演示了不同池化方法对特征映射的影响,有助于理解PyTorch中的池化操作。
最低0.47元/天 解锁文章
7552

被折叠的 条评论
为什么被折叠?



