Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)

这篇具有很好参考价值的文章主要介绍了Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 池化的功能

2. 神经原网络设定最大卷积层的作用

3. torch.nn.MaxPool2d()

4. 使用torch.nn.MaxPool2d()实战

 3. Pytorch源码


1. 池化的功能

先通过与卷积的相同点及不同点说明池化的功能。

池化与卷积的共同点:池化操作也是原图像矩阵(或特征图矩阵)与一个固定形状的窗口(核、或者叫算子)进行计算,并输出特征图的一种计算方式;

池化与卷积的不同点:卷积操作的卷积核是有数据(权重)的,而池化直接计算池化窗口内的原始数据,这个计算过程可以是选择最大值、选择最小值或计算平均值,分别对应:最大池化、最小池化和平均池化。由于在实际使用中最大池化是应用最广泛的池化方法,以下讲述均针对于最大池化进行说明,平均池化和最小池化也是同样的作用原理。

通过下图可以更直观理解最大池化的计算方式:

Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)

2. 神经元网络设定最大卷积层的作用

从上图可以看出,最大池化可以提取出指定窗口的特征(最大)数据,显著减少了特征图(特征张量的大小),这也是最大池化层的主要作用。

另外,由于最大池化能提取出特定窗口的最大数据,无论这个数据在窗口中的原始位置在哪,所以最大池化也缓解了对所要识别特征的位置敏感性。比如,在图像识别的实际使用过程中,要识别一个图像中是否有“行人”,最大池化层就可以缓解“行人”的位置对输出带来的影响,可以把计算更主要地关注在“是否”有“行人”上。

3. torch.nn.MaxPool2d()

torch.nn.MaxPool2d()所需要输入的参数可以参考pooling.py中的说明:

    Args:
        kernel_size: the size of the window to take a max over
        stride: the stride of the window. Default value is :attr:`kernel_size`
        padding: Implicit negative infinity padding to be added on both sides
        dilation: a parameter that controls the stride of elements in the window
        return_indices: if ``True``, will return the max indices along with the outputs.
                        Useful for :class:`torch.nn.MaxUnpool2d` later
        ceil_mode: when True, will use `ceil` instead of `floor` to compute the output shape

这些参数的定义和卷积层一样:

kernel_size:最大池化层的窗口大小,比如kernel_size = 3 即窗口为3×3的数据;

stride:步长,窗口每次移动的数据(像素)数;

padding:在数据中添加额外的数据(补0),以满足特定的格式或长度要求;

后面3个参数一般用不到,绝大多数情况不用理会。

dilation:作用是把池化窗口进行“膨胀”,默认为1,不同的dilation情况请见下图:

Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)

由于池化层的窗口中并没有数据,所以这个应该用不到,只是Pytorch中为了和卷积层输入参数保持一致;

return_indice:返回最大值的标记,上面已经说过了最大池化层并不关注最大值在原图的位置,所以这个99.99%不会设定为True;

 ceil_mode:如果设定为True,在计算输出形状时向上(天花板)取整,而不是向下(地板)取整。

4. 使用torch.nn.MaxPool2d()实战

使用计算原图(3×201×250)为以下:

Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)

 设定kernel_size = 6,stride = 2,输出特征图(3×98×123)为以下:

 Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)

 可以见到这里有一个和卷积层非常不一样的地方:卷积层会把所有输入的通道进行卷积后求和,这也是为什么彩色图片经过卷积后变成了灰度图(黑白图)。而最大池化层仍会保留原来的输入通道,这样如果输入是RGB三通道图像,那么输出也是RGB三通道图像。文章来源地址https://www.toymoban.com/news/detail-453788.html

 3. Pytorch源码

import torch
from PIL import Image
import torchvision


image = Image.open('spaceship.png').convert('RGB') #导入图片
image_to_tensor = torchvision.transforms.ToTensor()   #实例化ToTensor
original_image_tensor = image_to_tensor(image).unsqueeze(0)     #把图片转换成tensor

print(original_image_tensor.size())

maxpool = torch.nn.MaxPool2d(kernel_size=6, stride=2, padding=0)
maxpool_tensor = maxpool(original_image_tensor)

torchvision.utils.save_image(maxpool_tensor, 'maxpool.png')
print(maxpool_tensor.size())

到了这里,关于Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyTorch入门学习(九):神经网络-最大池化使用

    目录 一、数据准备 二、创建神经网络模型 三、可视化最大池化效果 一、数据准备 首先,需要准备一个数据集来演示最大池化层的应用。在本例中,使用了CIFAR-10数据集,这是一个包含10个不同类别图像的数据集,用于分类任务。我们使用PyTorch的 torchvision 库来加载CIFAR-10数据

    2024年02月07日
    浏览(24)
  • 全局平均池化/全局最大池化Pytorch实现:

    普通池化方法汇总详见:https://blog.csdn.net/qq_43665602/article/details/126625116 全局池化与普通池化的区别在于“局部区域”和“全局”:普通池化根据滑动窗口以及步长以逐步计算局部区域的方式进行;而全局池化是分别对每个通道的所有元素进行计算,谓之全局池化。 全局池化方

    2023年04月08日
    浏览(25)
  • 4. 池化层相关概念

    ① 最大池化层有时也被称为下采样。 ② dilation为空洞卷积,如下图所示。 ③ Ceil_model为当超出区域时,只取最左上角的值。 ④ 池化使得数据由5 * 5 变为3 * 3,甚至1 * 1的,这样导致计算的参数会大大减小。例如1080P的电影经过池化的转为720P的电影、或360P的电影后,同样的网速

    2024年02月11日
    浏览(30)
  • 6.5 池化层

    是什么 :池化层跟卷积层类似有个滑动窗口,用来取一个区域内的最大值或者平均值。 作用: 卷积神经网络的最后的部分应该要看到整个图像的全局,通过池化(汇聚)操作,逐渐汇聚要取的像素,最终实现学习全局表示的目标。同时,卷积层的所有优势也被保留在了中间层

    2024年02月14日
    浏览(31)
  • 机器学习——池化层

    池化层是深度学习中常用的一种层级结构,它可以对输入数据进行降采样,减少数据量,同时保留重要的特征信息。池化层通常紧跟在卷积层之后,可以有效地减少数据量和计算复杂度,提高模型的训练速度和泛化能力。 池化层的结构与卷积层类似,它也由多个滤波器组成,

    2024年02月15日
    浏览(38)
  • 什么是池化层?

    池化层(Pooling Layer)是卷积神经网络(CNN)中的一个重要组件,用于减少特征图(feature maps)的维度,同时保留重要的特征信息。以下是池化层的几个关键特点: 降低维度:池化层通过减少特征图的大小来降低数据的空间维度,这有助于减少计算量和避免过拟合。 操作方式

    2024年01月17日
    浏览(29)
  • 池化层

    池化操作是CNN中非常常见的一种操作,池化层是模仿人的视觉系统对数据进行降维,池化操作通常也叫做子采样(Subsampling)或降采样(Downsampling),在构建卷积神经网络时,往往会用在卷积层之后,通过池化来降低卷积层输出的特征维度,有效减少网络参数的同时还可以防止过拟

    2024年02月12日
    浏览(27)
  • 神经网络基础-神经网络补充概念-62-池化层

    池化层(Pooling Layer)是深度学习神经网络中常用的一种层级结构,用于减小输入数据的空间尺寸,从而降低模型的计算复杂度,减少过拟合,并且在一定程度上提取输入数据的重要特征。池化层通常紧跟在卷积层之后,用于缩小卷积层输出的尺寸。 常见的池化操作包括最大

    2024年02月12日
    浏览(34)
  • 每天五分钟计算机视觉:池化层的反向传播

    卷积神经网络(Convolutional Neural Network,CNN)作为一种强大的深度学习模型,在计算机视觉任务中取得了巨大成功。其中,池化层(Pooling Layer)在卷积层之后起到了信息压缩和特征提取的作用。然而,池化层的反向传播一直以来都是一个相对复杂和深奥的问题。本文将详细解

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包