深度学习入门-10

news2024/11/13 19:00:47

基于小土堆学习

池化层学习

池化层(Pooling Layer)是卷积神经网络(CNN)中的一种重要组件,它的主要作用是逐步减小数据的空间尺寸(即高度和宽度),以减少网络中参数的数量和计算量,同时也有助于提取主要特征并减少过拟合的风险。

池化操作通常有以下几种类型:

  • 最大池化(Max Pooling):在输入数据的局部区域中取最大值作为该区域的池化结果。这种方法能够有效地提取出纹理等特征。

  • 平均池化(Average Pooling):计算输入数据局部区域的平均值,并将其作为该区域的池化结果。这种方法对于背景信息的保留较为有利。

  • 随机池化(Stochastic Pooling):按照数值大小赋予概率,再按照概率进行亚采样。这种方法在一定程度上能够避免过拟合。

  • 全局平均池化(Global Average Pooling):对于特征图的每个通道,都计算其所有像素的平均值,通常用于网络的最后几层,以将特征图转换为向量形式进行分类或其他任务。

池化层的主要优点包括:

  • 特征不变性:池化操作使得模型更加关注于特征是否存在,而不是特征的具体位置,这有助于提高模型的鲁棒性。
  • 特征降维:通过减小数据的空间尺寸,池化层能够显著降低后续网络层的计算量。
  • 防止过拟合:池化操作有助于减少模型参数的数量,从而降低过拟合的风险。
    总的来说,池化层在卷积神经网络中扮演着重要的角色,它不仅能够提高计算效率,还有助于提取更加鲁棒和有用的特征。

PyTorch框架中nn模块下的各种池化层(Pooling Layers)

列出了PyTorch框架中nn模块下的各种池化层(Pooling Layers)。这些池化层可以对输入信号进行不同维度的池化操作,包括一维(1D)、二维(2D)和三维(3D)的池化。每种池化层都有其特定的应用场景和优势。

  • nn.MaxPool1d、nn.MaxPool2d、nn.MaxPool3d:
    这些层分别应用一维、二维和三维的最大池化操作。最大池化是在局部区域中取最大值,有助于提取纹理等特征。nn.MaxPool2d最常用的。
  • nn.MaxUnpool1d、nn.MaxUnpool2d、nn.MaxUnpool3d:
    这些层分别计算一维、二维和三维最大池化的部分逆操作。它们通常用于需要恢复原始尺寸或进行特定类型特征提取的场景。
  • nn.AvgPool1d、nn.AvgPool2d、nn.AvgPool3d:
    这些层分别应用一维、二维和三维的平均池化操作。平均池化计算局部区域的平均值,有助于保留背景信息。
  • nn.FractionalMaxPool2d、nn.FractionalMaxPool3d:
    这些层分别应用二维和三维的分数最大池化操作。分数池化是一种更灵活的池化方式,可以在不减少特征图尺寸的情况下进行池化。
  • nn.LPPool1d、nn.LPPool2d、nn.LPPool3d:
    这些层分别应用一维、二维和三维的幂平均池化操作。幂平均池化是一种介于最大池化和平均池化之间的池化方式,通过调整幂参数可以控制池化的行为。
  • nn.AdaptiveMaxPool1d、nn.AdaptiveMaxPool2d、nn.AdaptiveMaxPool3d:
    这些层分别应用一维、二维和三维的自适应最大池化操作。自适应池化可以根据输出尺寸自动调整池化区域的大小。
  • nn.AdaptiveAvgPool1d、nn.AdaptiveAvgPool2d、nn.AdaptiveAvgPool3d:
    这些层分别应用一维、二维和三维的自适应平均池化操作。与自适应最大池化类似,自适应平均池化也可以根据输出尺寸自动调整池化区域的大小。
    总的来说,这些池化层提供了丰富的池化操作选项,可以根据不同的应用场景和需求选择合适的池化层。

MaxPool2d

在这里插入图片描述
torch.nn.MaxPool2d 是 PyTorch 中的一个类,用于对二维输入(例如图像)执行最大池化操作。这个类有多个参数,可以控制池化操作的具体行为。下面是对这些参数的详细解释:

  • kernel_size:池化窗口的大小。可以是一个整数,表示窗口的高度和宽度都是这个值;也可以是一个 (height, width) 元组,分别指定窗口的高度和宽度。

  • stride:池化窗口的步长。如果设置为 None,则默认步长等于窗口的大小。也可以是一个整数或 (height_stride, width_stride) 元组,分别指定窗口在垂直和水平方向上的步长。

  • padding:输入数据的填充大小。如果设置为 0,则不进行填充。也可以是一个整数或 (height_pad, width_pad) 元组,分别指定在输入数据的高度和宽度方向上的填充大小。

  • dilation:池化窗口的扩张大小。如果设置为 1,则表示窗口的相邻元素之间没有空隙。如果设置为大于 1 的整数,则表示窗口的相邻元素之间有扩张的空隙。卷卷积核中间有空洞。
    在这里插入图片描述

  • return_indices:如果设置为 True,则除了返回池化后的输出,还会返回每个最大值的索引。这对于某些特定的应用(如最大池化的逆操作)可能是有用的。

  • ceil_mode:如果设置为 True,则计算输出信号的大小时,会使用向上取整的方式,而不是默认的向下取整。这可能会影响输出的尺寸。
    torch.nn.MaxPool2d 类通常用于卷积神经网络中,以减少数据的空间尺寸,同时保留重要的特征。通过调整这些参数,可以控制池化操作的具体行为,以适应不同的应用场景和需求。
    在这里插入图片描述
    在这里插入图片描述
    最大池化,就是取卷积核覆盖区域的最大值
    第一个像元以2为最终值
    在这里插入图片描述
    kernel_size=3,所下一步
    在这里插入图片描述
    因为多出来了一步,所以ceil_mode=Ture的时候,就要保留,如果是false就不保留,现在为Ture
    在这里插入图片描述
    在这里插入图片描述
    所以ceil_mode=Ture的时候,代码如下所示:

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]])
input = torch.reshape(input,(-1,1,5,5))
print("input.shape",input.shape)

class Test(nn.Module):
    def __init__(self):
        super(Test,self).__init__()
        self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=True)
    def forward(self,input):
        output = self.maxpool1(input)
        return output
test = Test()
output = test(input)
print(output)

输出结果为

C:\Anaconda3\envs\pytorch_test\python.exe H:\Python\Test\01test\nn_maxpool.py 
input.shape torch.Size([1, 1, 5, 5])
tensor([[[[2, 3],
          [5, 1]]]])

进程已结束,退出代码0

所以ceil_mode=False的时候,代码如下所示:

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]])
input = torch.reshape(input,(-1,1,5,5))
print("input.shape",input.shape)

class Test(nn.Module):
    def __init__(self):
        super(Test,self).__init__()
        self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=False)
    def forward(self,input):
        output = self.maxpool1(input)
        return output
test = Test()
output = test(input)
print(output)

输出结果为:

C:\Anaconda3\envs\pytorch_test\python.exe H:\Python\Test\01test\nn_maxpool.py 
input.shape torch.Size([1, 1, 5, 5])
tensor([[[[2]]]])

进程已结束,退出代码0

为什么要进行最大池化,就是在保留输入特征的时候,同时减少参数,这样可以加快计算速度。例如输入的1080影像,经过池化后可能缩小成720p

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

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

相关文章

OpenCV绘图函数(2)绘制圆形函数circle()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 绘制一个圆。 cv::circle 函数用于绘制一个给定中心和半径的简单圆或填充圆。 函数原型 void cv::circle (InputOutputArray img,Point cen…

a探索Python中的DOM操作神器:pyquery

文章目录 探索Python中的DOM操作神器:pyquery背景:为什么选择pyquery?pyquery是什么?如何安装pyquery?五个简单的pyquery函数使用方法场景应用:pyquery在实际开发中常见bug及解决方案总结 探索Python中的DO…

游泳耳机哪个牌子好?四大爆款游泳耳机实测,优缺点秒懂!

在快节奏的现代生活中,游泳不仅是一种锻炼身体的方式,更是一种放松心情、享受宁静的休闲活动。而音乐,作为情感的载体,其在游泳过程中的陪伴,无疑能够让人更加沉浸于水下的宁静与自由。因此,一款性能优越、…

积鼎科技携手潍柴动力的喷嘴雾化模拟项目荣获2024年数字仿真卓越应用奖

近日,积鼎科技携手潍柴动力股份有限公司(以下简称“潍柴动力”),凭借创新的喷嘴雾化一体化模拟仿真项目,其成果价值赢得了行业专家的一致认可,成功荣获2024年度数字仿真科技奖卓越应用奖。潍柴动力作为中国…

唯创知音在线TTS方案简介及测试版操作说明

一:背景介绍 在物联网与智能设备日新月异的今天,音频传输与控制技术成为了提升用户体验的关键环节。WT2605C蓝牙音频更新方案,凭借其强大的功能集与高效的交互设计,为两轮电动车、电子锁、提示器、智能安防等多个领域带来了前所未…

OpenAI将禁止中国使用ChatGPT了,你知道吗?

由于政策、法律原因,2024年7月9日以后OpenAI将禁止中国使用ChatGPT 以及调用相关接口,这样的话国内就没法使用ChatGPT 开发应用了。 不过不要急,国内有很多类似ChatGPT 的AI大模型,比如:文心一言、通义千问、ChatGLM、…

计算机毕业设计选题推荐-救援物资管理系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

ACCESS 工具注入实战 凡诺靶场

简介 Access数据库注入攻击是一种常见的网络安全,通过注入SQL代码来获取未授权的数据访问权限。这种攻击利用了应用程序与数据库之间的交互漏洞,攻击者通过输入特定的SQL代码片段来操纵数据库查询,从而绕过应用程序的安全机制,获取…

如何把控调整Facebook广告预算的正确时机

对于如何调整Facebook广告预算,之前我们已经出过几篇文章了,关注我们的朋友应该已经有了一定的了解,但对于什么时候该调整预算,什么时候该暂停广告,有些投手可能还无法准确的把控这个时机,特别是有的新手&a…

怎么把mp4转换成mp3?5种转换方法教会你

我们时常需要从视频中提取音频,比如将电影配乐、教学视频中的讲解或是喜爱的歌曲MV转换为MP3格式,以便在不同设备上播放或编辑。那么怎么把一个视频中的音频提取出来变成mp3格式呢?别着急,教大家5种简单高效转换方法,一…

SQLi-LABS靶场36-40通过攻略

less-36 这一关是转义函数换成了mysql_real_escape_string,绕过方法与35关一致 1.判断注入点 2.判断闭合方式 id1A0 -- 3.查看页面回显点 ?id-1%A0%27%20%20union%20select%201,2,3-- 4.查询数据库名 ?id-1%A0%27%20%20union%20select%201,database(),3-- 5.查询数据库的…

Qt20窗口相关位置函数

窗口相关位置函数 知识点geometry.hgeometry.cppmain.cpp运行图 知识点 geometry().x() 多屏幕实现方法 #include <QWidget> #include <QPoint> #include <QScreen> // 假设这个函数是某个QWidget的子类中的成员函数 void MyWidget::showGlobalXPos…

【生日视频制作】美女车模特举牌AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程美女车模特举牌AE模板改字广软件告生成器素材 怎么如何做的【生日视频制作】美女车模特举牌AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤&#xff1a; 安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染出视频

C# for语句

计数循环使用for语句比while语句可读性高 for (int i 0; i < 10; i) { Console.WriteLine("hello"); } 先执行int i0&#xff1b;语句&#xff0c;且只执行一次 判断循环条件 i<10; 语句的结果是否为true&#xff0c;如果为true&#xff0c;先执行循环体…

【MySQL】mysql索引和事务(面试经典问题)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 mysql索引 代价 查看索引 创建索引 删除索引 索引背后的数据结构 B树 B树 B树与B树的区别 B树的优势 mysql事务 事务 涉及的四个核心特性: 隔离性详细解释 脏读 不可重…

阿里巴巴1688 阿里228滑块 网站分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我…

前端接口请求与后端交互详解 联调后端取不到值 自己的一点记录写的比较随意 会比较乱但都是干货

响应头&#xff1a; cache-control: 缓存控制 联调后端取不到值&#xff1f;&#xff1f; 无论何种形式传递&#xff0c;后端解析表单信息的时候&#xff0c;会考虑Content-Type。 如果是JSON字符串的话&#xff0c;后端解析payload的内容时候要去解析JSON。 如果是key1val…

国科大 矩阵论2023秋季 叶世伟老师 考试试卷

叶老师的考试很难&#xff0c;图源一位胆大的勇者~ 希望能帮助大家&#xff01;

如何使用poutine检测代码库构建管道中的安全缺陷

关于poutine poutine是一款功能强大的缺陷检测工具&#xff0c;该工具基于Go语言开发&#xff0c;可以帮助广大研究人员快速扫描和检测代码存储库构建管道中的错误配置和安全漏洞。 该工具支持解析来自 GitHub Actions 和 Gitlab CI/CD 的 CI 工作流。当获得具有读取级别访问权…

MySQL:简述事务的SQL操作

1、查询数据库的隔离级别 选择数据库,查看当前事务隔离界别。 &#xff08;1&#xff09;读未提交&#xff1a;READ-UNCOMMITTED &#xff08;2&#xff09;读已提交&#xff1a;READ-COMMITTED &#xff08;3&#xff09;可重复读&#xff1a;REPEATABLE-READ &#xff08;4&…