torch.nn模块之池化层详解

本文详细介绍了torch.nn模块中的池化层,包括最大值池化、平均值池化和自适应平均值池化,讨论了它们的作用、调用方式以及在图像处理中的应用。通过实例演示了不同池化方法对特征映射的影响,有助于理解PyTorch中的池化操作。
摘要由CSDN通过智能技术生成

1. torch.nn模块中的池化层简介

池化操作的一个重要目的就是对卷积后得到的特征进行进一步处理(主要是降维),从而缓解计算时内存的压力。池化会选取一定大小的区域,将该区域内的像素值使用一个代表元素表示。如果使用平均值代替,称为平均值池化,如果使用最大值代替则称为最大值池化。这两种池化方式示意图如下图1所示。
最大值和平均值池化

图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)
表1 最大池化参数说明
池化参数 说明
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

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值