当前位置: 首页 > news >正文

深度学习(九)——神经网络:最大池化的作用

一、 torch.nn中Pool layers的介绍

官网链接:

https://pytorch.org/docs/stable/nn.html#pooling-layers

1. nn.MaxPool2d介绍

nn.MaxPool2d是在进行图像处理时,Pool layers最常用的函数

官方文档:MaxPool2d — PyTorch 2.0 documentation

(1)torch.nn.MaxPool2d类

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

(2)参数介绍

  • kernel_size(int or tuple): 用于设置一个取最大值的窗口,如设置为3,那么会生成一个3×3的窗口

  • stride(int or tuple): 默认值为kernel_size,步幅,和卷积层中的stride一样

  • padding(int or tuple): 填充图像,默认填充的值为0

  • dilation(int): 空洞卷积,即卷积核之间的距离。如卷积核的尺寸为3×3,dilation为1,那么返回一个大小为5×5的卷积核,卷积核每个元素与上下左右的元素之间空一格

  • return_indices(bool): 一般用的很少,不做介绍

  • ceil_mode(bool): 默认为False。为True时,输出的shape使用_ceil_格式(向上取整,即进一);为False时,输出的shape使用_floor_格式(向下取整)。

二、最大池化操作

1. 最大池化操作举例(理论介绍)

假设有一个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_,经过最大池化操作后,输出的结果如下图。

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

跟卷积操作的计算公式一样。具体如下:

参数说明:

  • N: 图像的batch_size

  • C: 图像的通道数

  • H: 图像的高

  • W: 图像的宽

计算过程:

  • Input:\( (N,C_{in}​,H_{in}​,W_{in}​)\) or \((C_{in}​,H_{in}​,W_{in}​)\)

  • Output: \((N,C_{out}​,H_{out}​,W_{out}​)\) or \((C_{out}​,H_{out}​,W_{out}​)\)

    • 其中有:

      \(H_{out}​=⌊\frac{H_{in}​+2×padding[0]−dilation[0]×(kernel\_size[0]−1)−1​}{stride[0]}+1⌋\)

      \(W_{out}​=⌊\frac{W_{in}​+2×padding[1]−dilation[1]×(kernel\_size[1]−1)−1​}{stride[1]}+1⌋\)

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

3. 最大池化操作代码举例

依然选取上面的例子,进行编程。

import torch
from torch import nn
from torch.nn import MaxPool2d
input=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)   #输入图像数据;与卷积操作不同的是,最大池化操作要求输入的图像数据是浮点数,而不是整数(为整数第23行会报错)
input=torch.reshape(input,(-1,1,5,5))     #构造图像数据,使其符合输入标准,即分别为(输入batch_size待定,1通道,大小为5×5)
print(input.shape)  #[Run] torch.Size([1, 1, 5, 5]);数据格式符合输入标准#构造神经网络
class Demo(nn.Module):def __init__(self):super(Demo,self).__init__()self.maxpool1=MaxPool2d(kernel_size=3,ceil_mode=True)  #设置最大池化函数,这里以ceil_mode=True为例def forward(self,input):output=self.maxpool1(input)  #将输入的数据(input)进行最大池化草子哦return outputdemo=Demo()  #创建神经网络
output=demo(input)
print(output)
"""
[Run]
tensor([[[[2., 3.],[5., 1.]]]])符合前面ceil_mode=True例子的输出结果一致
"""

4. 为什么要进行最大池化(最大池化的作用)

  • 最大程度地保留输入特征,并使数据量减小

  • 上述例子中输入图像为5×5,经过最大池化操作之后变成了3×3,甚至为1×1。使得图像特征得以保留,而数据量大大减少了,对整个网络来说参数减少了,运算速度也变快了

  • 打个比方,这就像看视频的时候,高清(输入图像)变(经过最大池化操作)标清(输出数据)

使用具体图片示例,介绍最大池化的作用:

from torch import nn
from torch.nn import MaxPool2d
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset=torchvision.datasets.CIFAR10("./dataset",train=False,download=True,transform=torchvision.transforms.ToTensor())
dataloder=DataLoader(dataset,batch_size=64)#构造神经网络
class Demo(nn.Module):def __init__(self):super(Demo,self).__init__()self.maxpool1=MaxPool2d(kernel_size=3,ceil_mode=True)  #设置最大池化函数,这里以ceil_mode=True为例def forward(self,input):output=self.maxpool1(input)  #将输入的数据(input)进行最大池化草子哦return outputdemo=Demo()  #创建神经网络writer=SummaryWriter("logs_maxpool")
step=0for data in dataloder:imgs,targets=datawriter.add_images("input",imgs,step)output=demo(imgs)writer.add_images("output",output,step)step+=1
writer.close()

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

最后的最后

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。

因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

五、面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下。
在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

相关文章:

深度学习(九)——神经网络:最大池化的作用

一、 torch.nn中Pool layers的介绍 官网链接: https://pytorch.org/docs/stable/nn.html#pooling-layers 1. nn.MaxPool2d介绍 nn.MaxPool2d是在进行图像处理时,Pool layers最常用的函数 官方文档:MaxPool2d — PyTorch 2.0 documentation &…...

「前端+鸿蒙」鸿蒙应用开发-ArkTS语法说明-组件声明

ArkTS 是鸿蒙应用开发中的一个框架,它允许开发者使用 TypeScript 语法来创建声明式的用户界面。在 ArkTS 中,组件声明是构建 UI 的基础。以下是 ArkTS 快速入门的指南,包括组件声明的语法说明和示例代码。 ArkTS 快速入门 - 语法说明 - 组件声明 组件基础 在 ArkTS 中,组…...

python的subprocess 模块

subprocess 模块是 2.4 版本中新增的模块, 它允许您生成新进程,连接到它们的 输入 / 输出 / 错误 管道,并获得它们的返回码 (状态信息), 该模块的目的在于取代几个较旧的模块和功能 subprocess 模块可以用于执行系统命令, 拿到执行的结果, 速度比较的快…...

【Arc gis】使用DEM提取流域范围

地址:arcgis DEM 提取流域范围(详细教程)(空间分析--Hydrology)_gis的gridcode是什么意思-CSDN博客...

大模型技术工程师:抓住时代机遇,成为行业精英_

伴随AI大模型的火热,中国科技大厂们正在掀起一场「跑步AI化」的风暴。从顶层战略到业务线重构,AI无疑已成为大厂们押注未来的新故事。 大模型时代已经到来 大模型已成为全球竞争热点,一个大模型时代已经到来。 大模型具备三个特点&#xf…...

孟德尔随机化R包:TwoSampleMR和MR-PRESSO安装

1. 孟德尔随机化R包 看一篇文章,介绍孟德尔随机化分析,里面推荐了这两个R包,安装了解一下: Methods:Genome-wide association study (GWAS) data for autoimmune diseases and AMD were obtained from the IEU Open GWAS databas…...

6月18日 Qtday4

作业day4.1 作业4.2...

Vue3模拟国足18强赛抽签

Vue3国足18强赛抽签 国足遇到这个对阵&#xff0c;能顺利出现吗&#xff1f; 1、系统演示 Vue3模拟国足18强赛抽签 2、关键代码 开始抽签 <script setup> import FenDang from "/components/chouqian/FenDang.vue"; import {ref} from "vue";le…...

mesa编译器nir信息储存问题

概述 本来想将一个完整的可以从hlsl-dxil-spirv-nir-code的项目划分为两个动态库a.dll与b.dll。应用程序调用a.dll与b.dll执行相同的过程。 a.dll&#xff1a;执行dxil-spirv-nir前端相关的转换。 b.dll&#xff1a;执行nir-code的转换。 应用程序调用dxc实现hlsl-dxil的过程&…...

windows下mysql设置开机自启动

windows下mysql设置开机自启动 情况1.mysql服务不存在情况2.mysql服务已存在 我们先检查一下电脑是否存在mysql服务 此电脑(右键)—>管理—>服务 看一下能不能找到相关mysql 服务 情况1.mysql服务不存在 以管理员的身份运行命令窗口,找到mysqld.exe 所在的路径 命令如下…...

L2-002 链表去重(C++)

给定一个带整数键值的链表 L&#xff0c;你需要把其中绝对值重复的键值结点删掉。即对每个键值 K&#xff0c;只有第一个绝对值等于 K 的结点被保留。同时&#xff0c;所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15&#xff0c;你需要输出去重后…...

异或运算在面试题中的应用

异或运算 是 涉及到数据位运算时常见的处理方式。如何进行异或运算?在对应位上,相同为0,不同1,但其实两个数据异或运算就是进行无进位加法。 例如: int a = 7, b = 6, a ^b = ? 算法1: 相同为0,不同为1 a ^ b= : 0 0 0 1 算法2: 无进位…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 单词大师(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…...

LabVIEW在SpaceX的应用

结合真实的资料介绍LabVIEW在SpaceX的应用&#xff0c;涵盖自动化测试系统、数据采集与监控、可视化与分析、模块化设计与扩展&#xff0c;以及效率与可靠性的提高。 ​ 自动化测试系统 LabVIEW在SpaceX的自动化测试系统中发挥了关键作用。自动化测试是确保SpaceX火箭及其子系…...

【Android面试八股文】讲一讲String、StringBuffer和StringBuilder在进行字符串操作时候的效率

文章目录 一、String二、StringBuffer三、StringBuilder四、String、StringBuffer和StringBuilder的效率测试五、String、StringBuffer和StringBuilder的选择一、String String是不可变的,final修饰,任何对String的操作都会创建一个新的String对象。在进行大量字符串拼接或修…...

[自动驾驶 SoC]-4 特斯拉FSD

FSD, 参考资料来源FSD Chip - Tesla - WikiChip 另外可参考笔者之前分享文章&#xff1a;[自动驾驶技术]-6 Tesla自动驾驶方案之硬件&#xff08;AI Day 2021&#xff09;&#xff0c;​​​​​​​[自动驾驶技术]-8 Tesla自动驾驶方案之硬件&#xff08;AI Day 2022&#xf…...

PostgreSQL源码分析——物化视图

我们前面分析完视图后&#xff0c;这里再继续分析一下物化视图&#xff0c;其实现原理是不相同的&#xff0c;需要注意&#xff0c;物化视图等于是将返回的结果集缓存起来&#xff0c;而视图是查询重写&#xff0c;结果需要重新进行计算。 create materialized view matvt1 as…...

操作系统入门系列-MIT6.828(操作系统工程)学习笔记(七)---- 系统调用函数与GDB(Lab: system calls)

系列文章目录 操作系统入门系列-MIT6.828&#xff08;操作系统工程&#xff09;学习笔记&#xff08;一&#xff09;---- 操作系统介绍与接口示例 操作系统入门系列-MIT6.828&#xff08;操作系统工程&#xff09;学习笔记&#xff08;二&#xff09;---- 课程实验环境搭建&am…...

ORA-12560: TNS:协议适配器错误

项目场景&#xff1a; 由于最近一直没有连接oracle&#xff0c;然后之前windows也是正常可以启动oracle&#xff0c;正常连接。无论是SQL Developer还是SQL PLUS命令&#xff0c;都能正常连接和操作。 问题描述 这两天刚好用SQL Developer工具连接&#xff0c;然后报错&#…...

不容小觑的“白纸黑字”:银行重空凭证的风险与防控

一、定义与重要性 定义&#xff1a; 银行重空凭证&#xff0c;也称为重要空白凭证&#xff0c;是银行专业术语&#xff0c;指银行印制的无面额、经银行或单位填写金额并签章后&#xff0c;即具有支取款项效力的空白凭证。 重要性&#xff1a; 它是银行资金支付的重要工具&a…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...