pytorch--Pooling layers

文章目录

    • 1.torch.nn.MaxPool1d()
    • 2.torch.nn.MaxPool2d
    • 3.torch.nn.AvgPool2d()
    • 4.torch.nn.FractionalMaxPool2d()
    • 5.torch.nn.AdaptiveMaxPool2d()
    • 6.torch.nn.AdaptiveAvgPool2d()


1.torch.nn.MaxPool1d()

  torch.nn.MaxPool1d() 是 PyTorch 库中的一个类,用于在神经网络中执行一维最大池化操作。最大池化是卷积神经网络(CNN)中常用的一种降采样操作,它可以减小输入的空间维度,并保留最显著的特征。一维最大池化操作主要应用于处理具有时间序列或一维信号的数据。例如,对于音频信号的处理或文本数据的卷积操作,可以使用一维最大池化来减小输入的长度。

"""
参数:kernel_size:一个整数或元组,用于指定最大池化窗口的大小。如果是一个整数,表示池化窗口的宽度为 kernel_size,高度为 1。如果是一个元组,可以分别指定窗口的宽度和高度。默认值为 1。
stride:一个整数或元组,用于指定池化操作的步幅(stride)。它控制在应用池化窗口时的滑动步长。如果未提供,将默认使用 kernel_size 的值,即非重叠池化。默认值为 kernel_size。
padding:一个整数或元组,用于指定在输入的两侧添加的零填充的数量。填充有助于在应用池化操作时保持输入的空间维度。默认值为 0,表示不进行填充。
dilation:一个整数或元组,用于指定核元素之间的间距(dilation)。它控制池化窗口元素的步幅,有效地增加感受野。默认值为 1,表示没有间距。
return_indices:一个布尔值,指示是否返回最大值的索引。如果设置为 True,则除了池化的输出之外,还会返回最大值的索引。默认值为 False。
输入:输入的形状应为 (batch_size, channels, sequence_length),其中 batch_size 是输入数据的批量大小,channels 是输入数据的通道数,sequence_length 是输入数据的序列长度。
输出:输出的形状为 (batch_size, channels, sequence_length_out),其中 sequence_length_out 是经过池化操作后的序列长度。输出的通道数与输入的通道数相同。
"""

在这里插入图片描述

import torch
import torch.nn as nn# 创建一个输入大小为 (batch_size=1, channels=1, sequence_length=10) 的张量
input_tensor = torch.tensor([[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]], dtype=torch.float32)# 创建一个一维最大池化层,池化窗口大小为 2,步幅为 2
maxpool = nn.MaxPool1d(kernel_size=2, stride=2)# 应用最大池化操作
output = maxpool(input_tensor)print(output)
tensor([[[ 2.,  4.,  6.,  8., 10.]]])

2.torch.nn.MaxPool2d

torch.nn.MaxPool2d() 是 PyTorch 库中的一个类,用于在神经网络中执行二维最大池化操作。最大池化是卷积神经网络(CNN)中常用的一种降采样操作,它可以减小输入的空间维度,并保留最显著的特征。二维最大池化操作主要应用于处理图像数据。它在每个池化窗口内找到最大值,并将其作为输出,以减小图像的尺寸。这有助于提取图像中的重要特征并减少计算量。

在这里插入图片描述

import torch
import torch.nn as nn# 创建一个输入大小为 (batch_size=1, channels=1, height=4, width=4) 的张量
input_tensor = torch.tensor([[[[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]]]], dtype=torch.float32)# 创建一个二维最大池化层,池化窗口大小为 2x2,步幅为 2
maxpool = nn.MaxPool2d(kernel_size=2, stride=2)# 应用最大池化操作
output = maxpool(input_tensor)print(output)
tensor([[[[ 6.,  8.],[14., 16.]]]])

3.torch.nn.AvgPool2d()

torch.nn.AvgPool2d() 是 PyTorch 库中的一个类,用于在神经网络中执行二维平均池化操作。平均池化操作将输入的特征图分割成固定大小的窗口,并计算每个窗口内元素的平均值。
在这里插入图片描述

"""
参数:kernel_size:整数或元组,用于指定平均池化窗口的大小。如果是一个整数,表示窗口的宽度和高度都为 kernel_size。如果是一个元组,可以分别指定窗口的宽度和高度。默认值为 2。
stride:整数或元组,用于指定平均池化操作的步幅(stride)。它控制在应用平均池化窗口时的滑动步长。默认值为 kernel_size。
padding:整数或元组,用于指定在输入的四周添加的零填充的数量。填充有助于在应用平均池化操作时保持输入的空间维度。默认值为 0,表示不进行填充。
ceil_mode:布尔值,表示在计算输出形状时是否使用 ceil 函数代替 floor 函数。当设置为 True 时,使用 ceil 函数;当设置为 False 时,使用 floor 函数。该参数主要影响在进行池化操作时是否向上取整来计算输出的尺寸。
输入:输入的形状应为 (batch_size, channels, height, width),其中 batch_size 是输入数据的批量大小,channels 是输入数据的通道数,height 是输入数据的高度,width 是输入数据的宽度。
输出:输出的形状为 (batch_size, channels, height_out, width_out),其中 height_out 和 width_out 是经过平均池化操作后的高度和宽度。输出的通道数与输入的通道数相同。
"""
import torch
import torch.nn as nn# 创建一个输入大小为 (batch_size=1, channels=1, height=4, width=4) 的张量
input_tensor = torch.tensor([[[[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]]]], dtype=torch.float32)# 创建一个二维平均池化层,池化窗口大小为 2x2,步幅为 2
avgpool = nn.AvgPool2d(kernel_size=2, stride=2)
# 应用平均池化操作
output = avgpool(input_tensor)print(output)
tensor([[[[ 3.5000,  5.5000],[11.5000, 13.5000]]]])

4.torch.nn.FractionalMaxPool2d()

nn.FractionalMaxPool2d() 是 PyTorch 中的一个类,用于执行分数最大池化操作。分数最大池化是一种池化方法,它可以在非整数位置上对输入进行池化操作,从而提供更大的灵活性。

"""
参数:kernel_size:整数或元组,用于指定池化窗口的大小。如果是一个整数,表示窗口的宽度和高度都为 kernel_size。如果是一个元组,可以分别指定窗口的宽度和高度。
output_size:整数或元组,用于指定输出的大小。如果是一个整数,表示输出的宽度和高度都为 output_size。如果是一个元组,可以分别指定输出的宽度和高度。如果提供了 output_size,则会忽略 kernel_size。
output_ratio:浮点数或元组,用于指定输出的比例。如果是一个浮点数,表示输出相对于输入的比例。如果是一个元组,可以分别指定宽度和高度的比例。如果提供了 output_ratio,则会忽略 kernel_size 和 output_size。
return_indices:布尔值,表示是否返回池化操作的索引。如果为 True,则除了池化结果之外,还会返回每个池化区域的索引。默认值为 False。
输入:输入的形状应为 (batch_size, channels, height, width),其中 batch_size 是输入数据的批量大小,channels 是输入数据的通道数,height 是输入数据的高度,width 是输入数据的宽度。
输出:输出的形状取决于输入的形状和参数设置。如果 return_indices 设置为 False,则输出的形状为 (batch_size, channels, height_out, width_out),其中 height_out 和 width_out 是经过分数最大池化操作后的高度和宽度。如果 return_indices 设置为 True,则输出的形状为 (batch_size, channels, height_out, width_out, 3),其中最后一个维度包含了分数最大池化操作的结果和索引。
"""
import torch
import torch.nn as nn# 创建一个输入大小为 (batch_size=1, channels=1, height=6, width=6) 的张量
input_tensor = torch.tensor([[[[1, 2, 3, 4, 5, 6],[7, 8, 9, 10, 11, 12],[13, 14, 15, 16, 17, 18],[19, 20, 21, 22, 23, 24],[25, 26, 27, 28, 29, 30],[31, 32, 33, 34, 35, 36]]]], dtype=torch.float32)# 创建一个分数最大池化层,指定输出大小为 (height_out=3, width_out=3)
fractional_maxpool = nn.FractionalMaxPool2d(kernel_size=2, output_size=(3, 3))# 应用分数最大池化操作
output = fractional_maxpool(input_tensor)print("Input shape:", input_tensor.shape)
print("Output shape:", output.shape)
print("Output tensor:")
print(output)
Input shape: torch.Size([1, 1, 6, 6])
Output shape: torch.Size([1, 1, 3, 3])
Output tensor:
tensor([[[[ 8., 10., 12.],[20., 22., 24.],[32., 34., 36.]]]])

5.torch.nn.AdaptiveMaxPool2d()

torch.nn.AdaptiveMaxPool2d() 是 PyTorch 中用于执行自适应最大池化操作的模块。与传统的最大池化操作不同,自适应最大池化允许指定输出的大小而不是固定的池化窗口大小。这样可以适应不同输入尺寸的情况。

torch.nn.AdaptiveMaxPool2d(output_size, return_indices=False)
"""
参数:output_size:指定输出的大小,可以是一个整数 output_size,表示输出的高度和宽度相同,或者是一个元组 (output_height, output_width),表示输出的高度和宽度分别指定。
return_indices:一个布尔值,表示是否返回最大值的索引,默认为 False。如果设置为 True,则除了输出张量之外,还会返回一个包含最大值索引的张量。
返回值:返回经过自适应最大池化操作后的输出张量。
"""
import torch
import torch.nn as nn# 创建一个输入大小为 (batch_size=1, channels=3, height=8, width=8) 的张量
input_tensor = torch.randn(1, 3, 8, 8)# 创建一个自适应最大池化层,指定输出大小为 (output_height=4, output_width=4)
adaptive_max_pool = nn.AdaptiveMaxPool2d((4, 4))# 应用自适应最大池化操作
output = adaptive_max_pool(input_tensor)print("Input shape:", input_tensor.shape)
print("Output shape:", output.shape)
print("Output tensor:")
print(output)
Input shape: torch.Size([1, 3, 8, 8])
Output shape: torch.Size([1, 3, 4, 4])
Output tensor:
tensor([[[[ 1.2610,  1.7199,  0.5566, -0.6244],[ 1.2304,  1.0557,  1.0771,  1.9450],[ 1.2392,  2.3084,  1.0637,  1.1622],[ 1.3770,  0.6236,  1.3798,  0.7460]],[[ 0.8982,  1.4581,  0.3343,  0.9386],[ 1.6850,  0.6486,  1.8757,  0.2791],[ 1.7288, -0.0283,  0.3951,  1.4132],[ 0.8079, -0.1223,  1.0691,  1.6758]],[[ 0.7427,  1.1573,  1.2954, -0.4555],[ 2.0537,  1.0242,  1.2825,  0.0518],[ 0.1625,  1.7359,  1.3700,  0.8211],[ 2.9089,  1.0194,  0.5195,  0.3354]]]])Process finished with exit code 0

6.torch.nn.AdaptiveAvgPool2d()

torch.nn.AdaptiveAvgPool2d() 是 PyTorch 中用于执行自适应平均池化操作的模块。与传统的平均池化操作不同,自适应平均池化允许您指定输出的大小而不是固定的池化窗口大小。这样可以适应不同输入尺寸的情况。

torch.nn.AdaptiveAvgPool2d(output_size)
"""
参数:output_size:指定输出的大小,可以是一个整数 output_size,表示输出的高度和宽度相同,或者是一个元组 (output_height, output_width),表示输出的高度和宽度分别指定。
返回值:返回经过自适应平均池化操作后的输出张量。
"""
import torch
import torch.nn as nn# 创建一个输入大小为 (batch_size=1, channels=3, height=8, width=8) 的张量
input_tensor = torch.randn(1, 3, 8, 8)# 创建一个自适应平均池化层,指定输出大小为 (output_height=4, output_width=4)
adaptive_avg_pool = nn.AdaptiveAvgPool2d((4, 4))# 应用自适应平均池化操作
output = adaptive_avg_pool(input_tensor)print("Input shape:", input_tensor.shape)
print("Output shape:", output.shape)
print("Output tensor:")
print(output)
Input shape: torch.Size([1, 3, 8, 8])
Output shape: torch.Size([1, 3, 4, 4])
Output tensor:
tensor([[[[ 0.2527, -0.1540,  0.5581,  0.3150],[ 0.1681,  0.1476,  0.6236, -0.3700],[ 0.4671,  0.2676,  0.2503,  0.9639],[ 1.3397, -0.6461,  0.1389,  1.3841]],[[ 0.0513, -0.3766, -0.0537, -0.4022],[ 0.2456,  0.1087,  0.1884, -0.3771],[-0.1746, -0.4370,  0.7384,  0.5044],[ 0.2178,  0.3246, -0.5665, -0.6366]],[[-0.3851, -0.0275, -0.3056,  0.0675],[-0.6003, -0.4432,  0.9833, -0.4356],[-0.0093, -0.2932,  0.7755, -0.1698],[ 0.3236,  0.8242, -0.1989,  0.2372]]]])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/27937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ISP图像算法面试准备(1)

ISP图像算法面试准备 ISP图像算法面试准备(1) 文章目录 ISP图像算法面试准备前言一、ISP流程二、重点关注1. AWB必须在Demosaic之后进行。2. Gamma矫正通常在CCM之前进行 三、如何实现ISP参数自动化调试四、AE,即自动曝光(Auto Exposure)总结…

【太原理工大学】软件系统安全—分析题

OK了,又是毫无准备的一场仗,我真是ありがとうございます 凸^o^凸 根据前几年传下来的信息,所谓“分析”,就是让你根据情节自行设计,例如如何设计表单等,这类多从实验中出,王老师强调好好做实验一…

Mybatis框架中结果映射resultMap标签方法属性收录

Mybatis框架中结果映射resultMap标签收录 在MyBatis框架中,resultMap 是一种强大的机制,用于将数据库结果集映射到Java对象上。它允许你定义如何将查询结果中的列映射到Java对象的属性上,尤其是当数据库表的字段名与Java对象的属性名不一致时…

HTML静态网页成品作业(HTML+CSS)—— 明星吴磊介绍网页(5个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 二、作品演示 三、代…

TCP与UDP案例

udp不会做拆分整合什么的 多大就是多大

【Spine学习08】之短飘,人物头发动效制作思路

上一节说完了跑步的, 这节说头发发型。 基础过程总结: 1.创建骨骼(头发需要在上方加一个总骨骼) 2.创建网格(并绑定黄线) 3.绑定权重(发根位置的顶点赋予更多总骨骼的权重) 4.切换到…

Orange_Pi_AIpro运行蜂鸟RISC-V仿真

Orange_Pi_AIpro运行蜂鸟RISC-V仿真 突发奇想,试一试Orange Pi AIpro上运行蜂鸟RISC-V的仿真。 准备 默认已经有一个Orange Pi AIpro,并且对设备进行一定的初始化配置,可以参考上一篇博文开源硬件初识——Orange Pi AIpro(8T&a…

FineReport简单介绍

一、介绍 官网 :FineReport产品简介- FineReport帮助文档 - 全面的报表使用教程和学习资料 报表是以表格、图表的形式来动态展示数据,企业通过报表进行数据分析,进而用于辅助经营管理决策。 FineReport 是一款用于报表制作,分析和…

短视频矩阵系统源码搭建--如何基于各平台原生态坏境做开发

短视频矩阵系统源码搭建是一个涉及多个技术层面的复杂过程,它要求开发者能够理解并利用不同平台的原生环境来开发和部署应用程序。以下是一些基于不同平台原生环境开发短视频矩阵系统的一般步骤和考虑因素: 1.需求分析:首先明确系统需要实现的…

抽奖系统源码_微信抽奖系统PHP源码开源

介绍: 微信抽奖系统源码是一个以php MySQL进行开发的手机抽奖系统源码。用途:适合做推广营销、直播、粉丝抽奖。 功能介绍: 1、后台可以设置每个抽奖用户的抽奖次数,后台添加设置奖品,适和企业和商场搞活动,后台添加用户,才能抽…

[RL9] Rocky Linux 9.4 搭载 PG 16.1

副标题:Rocky Linux 9.4 升级实录,及 PG 16 相关内容 背景 Rocky Linux 9.4 (以下简称 RL) 于5月9日正式发布,本文记录了从 RL 9.3 升级到 9.4 的过程,以及升级前后的一些变化。 之前介绍过 RL 9 的相关内容,请戳&…

学习笔记——网络管理与运维——SNMP(SNMP架构)

三、SNMP架构 1、SNMP结构概述 SNMP被设计为工作在TCP/IP协议族上,基于TCP/IP协议工作,对网络中支持SNMP协议的设备进行管理。所有支持SNMP协议的设备都提供SNMP这个统一界面,使得管理员可以使用统一的操作进行管理,而不必理会设…

个人网站制作 Part 25 添加实时聊天功能 | Web开发项目添加页面缓存

文章目录 👩‍💻 基础Web开发练手项目系列:个人网站制作🚀 添加实时聊天功能🔨使用聊天服务🔧步骤 1: 选择聊天服务🔧步骤 2: 安装Socket.io🔧步骤 3: 创建Socket.io服务器 &#x1…

GStreamer 源码编译,在 Clion 下搭建调试环境

前言 最近在学习 GStreamer,官方提供了一些教程,本人希望能够断点调试,以便学习代码逻辑。本文记录如何在 Clion 搭建 GStreamer 源码编译、调试环境 步骤 下载源码 git clone https://gitlab.freedesktop.org/gstreamer/gstreamer.gitCl…

【漏洞复现】英飞达医学影像存档与通信系统 Upload.asmx 任意文件上传漏洞

0x01 产品简介 英飞达 医学影像存档与通信系统 Picture Archiving and Communication System,它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机,各种红外…

适配不同数据库厂商方案

背景 在对国产化数据有要求的时候,我们会做对 达梦、海量等数据库的配置。 有些SQL 以前没有写成标准SQL; 那么适配的时候怎么办呢?改成标准SQL。 如果不好改呢?比如SQL比较复杂等,需要判断 当前是哪个厂商的数据库…

2024全球边缘计算大会参会企业名单(首批)

6月22日,第九届全球边缘计算大会将在深圳南山区科兴科学园举办,本次大会由边缘计算社区主办,并得到了EMQ、研华科技、网宿科技等单位的大力支持!大会邀请了20重磅嘉宾,聚焦边缘计算前沿技术方向和热点趋势。 以下为首批…

HO-VMD-TCN:西储大学轴承故障诊断全流程详解

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 原理详解 1.数据预处理 2.特征提取 3.故障…

DomoAI让你轻松变身视频达人!支持20s完整视频生成!

账号注册 官网:https://www.domoai.app/zh-Hant/library 功能 支持不同风格的视频类型,支持图片转视频,支持文字转图片,支持静态图片变为动态。 可以切换语言为中文 风格转换 选择不同风格的 支持生成20s,目前接触…

数据预处理 #数据挖掘 #python

数据分析中的预处理步骤是数据分析流程中的重要环节,它的目的是清洗、转换和整理原始数据,以便后续的分析能够准确、有效。预处理通常包括以下几个关键步骤: 数据收集:确定数据来源,可能是数据库、文件、API或网络抓取…