神经网络 torch.nn---Pooling layers(nn.MaxPool2d)

torch.nn — PyTorch 2.3 documentation

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io)

nn.MaxPool2d

class torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

参数介绍

  • kernel_size(int or tuple) - max pooling的窗口大小。用于设置一个取最大值的窗口,如设置为3,那么会生成一个3×3的窗口
  • stride(int or tupleoptional) - 默认值为kernel_size,步幅,和卷积层中的stride一样
  • padding(int or tupleoptional) - 填充图像,默认填充的值为0
  • dilation(int or tupleoptional) – 一个控制窗口中元素步幅的参数。空洞卷积,即卷积核之间的距离。如卷积核的尺寸为3×3,dilation为1,那么返回一个大小为5×5的卷积核,卷积核每个元素与上下左右的元素之间空一格
  • return_indices - 如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助。一般用的很少
  • ceil_mode - 默认为False。为True时,输出的shape使用ceil格式(向上取整,即进一);为False时,输出的shape使用floor格式(向下取整)。

nn.MaxPool2d的作用

对于输入信号的输入通道,提供2维最大池化(max pooling)操作

如果输入的大小是(N,C,H,W),那么输出的大小是(N,C,H_out,W_out)和池化窗口大小(kH,kW)的关系是:

如果padding不是0,会在输入的每一边添加相应数目0
dilation用于控制内核点之间的距离,详细描述在这里

参数kernel_sizestridepaddingdilation数据类型: 可以是一个int类型的数据,此时卷积height和width值相同; 也可以是一个tuple数组(包含来两个int类型的数据),第一个int数据表示height的数值,tuple的第二个int类型的数据表示width的数值

操作前后的图像大小计算公式

参数说明:

  • N: 图像的batch_size

  • C: 图像的通道数

  • H: 图像的高

  • W: 图像的宽

计算过程:

shape:
input: (N,C_in,H_in,W_in)
output: (N,C_out,H_out,W_out)or(C_out,H_out,W_out)

看论文的时候,有些比如像padding这样的参数不知道,就可以用这条公式去进行推导

最大池化操作举例

假设有一个5×5的图像和一个3×3的池化核(kenel_size=3),如下图。池化过程就是将池化核与图像进行匹配。下面介绍最大池化的具体操作。

首先用池化核覆盖图像,如下图。然后取到最大值,作为一个输出。

上图为第一次最大池化操作,最大值为2。将2作为一个输出,如下图。

由于本例未对stride进行设置,故stride采取默认值,即stride=kernel_size=3,池化核移动如下图(移动方式与上上文中提到的卷积核移动方式相同,不再赘述)。由于池化核移动已超出范围,要不要取这3×2部分的最大值,取决于call_mode的值,若ceil_mode=True,则取最大值,即输出3;若ceil_mode=False,则不取这部分的值,即这一步不进行池化操作。

假设ceil_mode=True,经过最大池化操作后,输出的结果如下图。

假设ceil_mode=False,经过最大池化操作后,输出的结果如下图。

最大池化的程序代码

示例1
import torch
from torch import nn
from torch.nn import MaxPool2dinput = torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]
], dtype=torch.float32)
print(input.shape)input = torch.reshape(input, (-1, 1, 5, 5))print(input.shape)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.maxpool1 = MaxPool2d(kernel_size=3, ceil_mode=True)def forward(self, input):output = self.maxpool1(input)return outputtudui = Tudui()
output = tudui(input)
print(output)

输出

示例2
import torchvision
import torch
from torch import nn
from torch.nn import MaxPool2dfrom torch.utils.data import Dataset, DataLoader
from torch.utils.tensorboard import SummaryWriterdataset = torchvision.datasets.CIFAR10(root='./dataset', train=False, transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset, batch_size=64)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.maxpool1 = MaxPool2d(kernel_size=3, ceil_mode=True)def forward(self, input):output = self.maxpool1(input)return outputtudui = Tudui()
writer = SummaryWriter('logs')step = 1
for data in dataloader:imgs, target= datawriter.add_images("input", imgs, step)output = tudui(imgs)writer.add_images("output", output, step)step += 1writer.close()

对比输入输出,可以看出图像更糊了

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

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

相关文章

AI机器人公众号小程序h5源码开源交付支持二开黑色风格版本

AI机器人系统对接OPENAI:开启智能新纪元 更新全新UI、新增全家桶模块、新增热榜板块、支持语音朗读、支持快速回答、支持AI绘图、支持文字一键生成图、支持导出pdf、支持导出word、支持导出文字、支持快速响应、支持中英翻译、支持markdown 🚀一、引言…

还在为复制粘贴烦恼吗?这5个工具帮你轻松搞定

在日常工作中,CtrlC和CtrlV无疑是我们使用最为频繁的快捷键组合。 复制粘贴,轻松快捷。 但是在使用中,也会有一点不便,那就是无法保存剪贴历史内容。 比如我说复制之后,我想要想要找回这一次复制之前的内容&#xf…

不要使用业务键作为数据库主键

Mark Seemann这篇博客文章反对使用自然键作为数据库表中的主键,而是建议始终使用合成(人工)键。 什么是自然键 自然键(也称为业务键或领域键 )是数据库中一种唯一键,由存在并在数据库外部世界(…

调用华为云实现人证核身证件版(二要素)

目录 1.作者介绍2.华为云人证核身2.1什么是人证核身2.2应用场景2.3限制要求 3.流程介绍3.1调用API实现3.2调用SDK实现 1.作者介绍 高凡平,男,西安工程大学电子信息学院,2023级研究生 研究方向:数码印花缺陷检测 电子邮件&#xf…

下载NVIDIA官网的培训视频,生成中文字幕和PPT

下载NVIDIA官网的培训视频,生成中文字幕和PPT 一.[视频网站](https://www.nvidia.cn/on-demand/session/gtc24-s62129/)二.如何获取视频的原始链接三.下载视频的脚本【生成output.mp4】四.安装whisper环境【语音识别生成英文字幕】五.下载whisper模型六.生成英文字幕【输出merg…

最好用的搜题软件大学?8个公众号和软件推荐清单! #知识分享#知识分享#经验分享

今天,我将分享一些受欢迎的、被大学生广泛使用的日常学习工具,希望能给你的学习生活带来一些便利和启发。 1.彩虹搜题 这个是公众号 一款专供大学生使用的搜题神器专注于大学生校内学习和考研/公考等能力提升 下方附上一些测试的试题及答案 1、行大量…

版图快捷键

Ctrlf版图都不显示 Shiftf显示正常图层版图 顶层版图选中某一个block后,Shiftx进入下一层版图和对应的SCH,Shiftb返回上一层

几款免费又好用的项目管理工具(甘特图)

选择甘特图工具时,我们不仅要考虑工具的基本功能,还要考虑其易用性、团队协作能力、定制性以及与其他软件的集成能力。以下是几款好用的甘特图工具及它们的优点和不足,帮助你来选择适合自己的工具: 1、进度猫 特点: 任…

如何做好期货投资?

期货,这个词对于很多人来说可能还是个陌生的词汇,但是,随着经济的发展和人们对金融投资的需求增加,期货投资也变得越来越受到关注。那么,如何才能做好期货投资呢? 首先,了解期货的基本知识是非…

mesa编译器input识别问题2

概述 hlsl源码如下: struct PSInput {float4 position : SV_POSITION;float4 color : COLOR;float4 color2 : COLOR2; };PSInput VS(float4 pos : POSITION, float4 color : COLOR) {PSInput result;result.position pos;result.color color;return result; }fl…

电子设计新纪元:三品PLM系统在快速变革中的适应性

随着科技的飞速发展,电子行业正经历着前所未有的变革。产品生命周期的缩短、技术迭代的加速以及市场竞争的加剧,都对电子行业提出了更高的管理要求。在这样的背景下,传统的产品数据管理PDM和产品生命周期管理PLM系统显得力不从心。本文将探讨…

Python学习笔记速成版

数据容器 列表的方法-总览 具体操作 元组 定义 相关操作 注意事项 特点 字符串 总览 常用操作 特点 序列 定义 切片操作 Set集合 总览 定义 常用操作 注意事项 字典 总览 定义 常用操作 获取 嵌套 其他操作 summary 通用操作 字符串大小比较 函数进阶 多个返回值 多种传…

Docker面试整理-如何进行Docker镜像的构建和发布?

构建和发布 Docker 镜像是 Docker 使用中的一个常见任务,通常涉及编写 Dockerfile、构建镜像以及将其推送到镜像仓库的过程。以下是构建和发布 Docker 镜像的详细步骤: 1. 编写 Dockerfile 首先,你需要创建一个 Dockerfile,这是一个包含了一系列指令的文本文件,用来告诉 D…

香橙派 AIpro开发板深度测评

笔者从事无人机研发工作有四五年了,最近几年无人机的智能化是个热门的话题,现在的飞控系统已经非常的稳定。自动避障,AI识别这些功能也逐渐成了无人机的标配功能。飞控底层控制系统一般都是单片机,算力有限。因此和AI的结合势必要…

快准稳的文档解析工具,帮助构建性能优越的金融领域知识库问答产品

随着大模型应用落地速度加快,企业级应用相关技术模块日渐成熟,在各个行业领域,企业改革现有业务流程与生产方式、使用AI提高运作效率的可行性大幅度提升。其中,金融行业作为数据密集、更新快速的代表性行业之一,经常与…

大家都在谈数据要素,但数据交易市场惨淡,原因在哪?有解吗?

两周前,我在南宁参加中国计算机学会数据库战略研讨会,与会的专家、学者就数据要素的确权、定价、流通、安全、供需匹配等问题做了很多讨论。由于政府的推动,国家数据局的成立,当前数据资产的热度很高,尤其是大型央企、…

0117__ANSI C、ISO C、Standard 是什么关系

【C语言笔记】什么是ANSI C标准?-腾讯云开发者社区-腾讯云 ANSI C、ISO C、Standard 是什么关系?-CSDN博客 滑动验证页面 滑动验证页面

第十三章 组合模式

目录 1 组合模式介绍 2 组合模式原理 3 组合模式实现 4 组合模式应用实例 5 组合模式总结 1 组合模式介绍 组合模式(Composite Pattern) 的定义是:将对象组合成树形结构以表示整个部分的层次结构.组合模式可以让用户统一对待单个对象和对象的组合. 2 组合模式…

【数理统计】5-假设检验、参数与非参数检验

文章目录 一、前言二、参数检验和非参数检验2.1 卡方检验(非参数检验)2.1.1 单因素卡方检验例子2.1.2 双因素卡方检验 2.2 t检验(参数检验)2.2.1 单样本t检验(One-Sample t-Test)2.2.2 独立样本t检验&#…

Rust reqwest 简明教程

概述 reqwest 是 Rust 中一个非常流行和强大的 HTTP 客户端库,它提供了一种简单的方式来发送 HTTP 请求并处理响应。reqwest 支持阻塞和非阻塞(异步)请求,使其适合于各种不同的应用场景。在这篇博文中,我们将详细介绍…