动手学深度学习(pytorch)学习记录25-汇聚层(池化层)[学习记录]

news2024/9/21 18:50:13

目录

  • 汇聚层(池化层):
  • 填充和步幅
  • 多通道

汇聚层(池化层):

降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。
最大汇集层
汇聚层和卷积层的运动方式一样,从左上角向右下角移动指定步幅,汇聚层执行的是“采样”操作。 汇聚层是没有参数的。

import torch
from torch import nn

定义一个池化操作,X是张量,pool_size是汇聚层大小,mode默认为max即输出为输入区域的最大值,mode设置为avg时,输出为输入区域的平均值。

def pool2d(X, pool_size, mode='max'):
    p_h, p_w = pool_size
    Y = torch.zeros((X.shape[0] - p_h + 1, X.shape[1] - p_w + 1))
    for i in range(Y.shape[0]):
        for j in range(Y.shape[1]):
            if mode == 'max':
                Y[i, j] = X[i: i + p_h, j: j + p_w].max()
            elif mode == 'avg':
                Y[i, j] = X[i: i + p_h, j: j + p_w].mean()
    return Y

输入张量,验证最大汇聚层

X = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])
print(X)
pool2d(X, (2, 2))
tensor([[0., 1., 2.],
        [3., 4., 5.],
        [6., 7., 8.]])
tensor([[4., 5.],
        [7., 8.]])

验证平均汇聚层

pool2d(X, (2, 2), 'avg')
tensor([[2., 3.],
        [5., 6.]])

填充和步幅

X = torch.arange(16, dtype=torch.float32).reshape((1, 1, 4, 4))
X
tensor([[[[ 0.,  1.,  2.,  3.],
          [ 4.,  5.,  6.,  7.],
          [ 8.,  9., 10., 11.],
          [12., 13., 14., 15.]]]])

默认情况下,深度学习框架中的步幅与汇聚窗口的大小相同,如果使用形状为(3,3)的汇聚层窗口,则得到的步幅大小为(3,3)。

pool2d = nn.MaxPool2d(3)
pool2d(X)
tensor([[[[10.]]]])

手动设置填充和步幅

pool2d = nn.MaxPool2d(3, padding=1, stride=2)
pool2d(X)
tensor([[[[ 5.,  7.],
          [13., 15.]]]])

自定义汇聚层窗口、填充、步幅

pool2d = nn.MaxPool2d((2, 3), stride=(2, 3), padding=(0, 1))
pool2d(X)
tensor([[[[ 5.,  7.],
          [13., 15.]]]])

多通道

在通道维度上连结张量X和X + 1,以构建具有2个通道的输入。

X = torch.cat((X, X + 1), 1)
X
tensor([[[[ 0.,  1.,  2.,  3.],
          [ 4.,  5.,  6.,  7.],
          [ 8.,  9., 10., 11.],
          [12., 13., 14., 15.]],

         [[ 1.,  2.,  3.,  4.],
          [ 5.,  6.,  7.,  8.],
          [ 9., 10., 11., 12.],
          [13., 14., 15., 16.]]]])

汇聚后输出通道的数量仍是2

pool2d = nn.MaxPool2d(3, padding=1, stride=2)
pool2d(X)
tensor([[[[ 5.,  7.],
          [13., 15.]],

         [[ 6.,  8.],
          [14., 16.]]]])

封面图片来源
文章用图与封面一致。
欢迎点击我的主页查看更多文章。
本人学习地址https://zh-v2.d2l.ai/
恳请大佬批评指正。

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

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

相关文章

【观察】联想数据网络产品线全新升级,构建高质量的AI网络底座

毫无疑问,数字经济时代,算力已成为推动千行百业数字化转型,赋能经济蓬勃发展的重要引擎,同时也成为衡量国家综合实力的重要指标之一。特别是随着以ChatGPT、GPT4为代表的AI大模型的发布,不仅对数据中心基础设施提出了巨…

ZBrush与Blender雕刻功能哪个更好些?

选择正确的3D软件首先会让你的创作过程更加轻松,尤其是在动画或大片电影制作方面。不同的软件提供不同的功能,并倾向于专注于特定领域,如绘画、动画或雕刻。如果你选择了适合你风格和目标的软件,你可以创作出极具创意的作品。 在…

数据结构:浅谈树的遍历方式

遍历的含义就是把树的所有节点(Node)按照某种顺序访问一遍。包括前序,中序,后续,广度优先(队列),深度优先(栈)5 种遍历方法。之所以叫前序、中序、后序遍历&a…

python 学习一张图

python学习一张图,python的特点的是学的快,一段时间不用,忘记的也快,弄一张图及一些入门案例吧。 写一个简单的测试: #!/usr/bin/python # -*- coding: UTF-8 -*- import osdef add_num(a, b):return a bif __name__…

【AIGC】探索超凡记忆:SuperMemory,你的私人智能书签助手!

🧠 构建你的第二大脑:SuperMemory 在这个信息爆炸的时代,我们每天都在互联网上浏览和保存大量的信息,但往往这些宝贵的数据就像被扔进了黑洞,再也没有被回顾和利用。 SuperMemory 开源项目应运而生,旨在解…

深度学习基础案例4--运用动态学习率构建CNN卷积神经网络实现的运动鞋识别(测试集的准确率84%)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 前几天一直很忙,一直在数学建模中,没有来得及更新,接下来将恢复正常这一次的案例很有意思:在学习动态调整…

Nexus基本介绍

Nexus是Sonatype公司发布的一款强大的仓库(Repository)管理软件,常被用来搭建Maven私服,因此也被称为“Maven仓库管理器”。 Nexus 的Web界面: Nexus的主要功能与优势 仓库管理: Nexus支持多种仓库类型…

初识Verilog HDL其一

VerilogHDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 1.1 Verilog基础语法 1.11 逻辑值 0: 逻辑低电平,条件为假&am…

【信号发生器】连续模式和扫描模式下,示波器呈现出来的波形有何区别

信号发生器在“连续模式”和“扫描模式”下输出的波形在示波器中呈现出的波形形状有显著不同,这与它们各自的工作方式密切相关。 1、连续模式(Continuous Mode) ①工作方式:信号发生器在连续模式下输出固定频率、固定幅度的信号…

[AHK]编写Dialog类代替内置的InputBox命令

更灵活的自定义的Dialog类,可以用来平替内置的InputBox命令 AHK v1代码 #requires Autohotkey v1.0 answer : Dialog("输出结果:", "good") MsgBox, % "you answered: " answer ExitAppDialog(Question, DefaultValue :…

Java面试篇基础部分-垃圾回收算法

大厂面试垃圾回收算法详解内容。 JVM内存垃圾对象的确定? Java开发过程中,使用引用计数和可达性分析。来确定一个对象是否是需要被回收的对象,如果是需要被回收的对象则,对其进行垃圾回收,如果不是则说明是存在引用的对象,则不能清理 首先来分析一下引用算法,如果这个时…

web防火墙技术措施有哪些?防火墙主要类型有哪些

网络安全已经成为了一个不可忽视的重要议题。web防火墙是入侵检测系统,入侵防御系统的一种。web防火墙技术措施有哪些?Web应用防火墙,正是守护网络安全的一道坚实屏障。今天就跟着小编一起了解下关于web防火墙。 web防火墙技术措施有哪些&…

[C高手编程] const, volatile, register, inline: 修饰符与关键字全面解析

💖💖⚡️⚡️专栏:C高手编程-面试宝典/技术手册/高手进阶⚡️⚡️💖💖 「C高手编程」专栏融合了作者十多年的C语言开发经验,汇集了从基础到进阶的关键知识点,是不可多得的知识宝典。如果你是即将…

内存管控:内存池篇

目录 1.内存池的工作原理 2.内存池的优势 3.长时间运行的应用和内存碎片 4.代码实践 4.1核心结构(内存池结构) 4.2核心函数 4.2.1创建内存池 4.2.2销毁内存池 4.2.3分配内存块 4.2.4归还内存块入池 内存池(Memory Pool&#xff09…

CMake导入OpenCV检测人脸

基于级联分类器的人脸检测示例"face_detection.cpp"&#xff1a; #include <opencv2/opencv.hpp>int main(int argc,char *argv[]) {// load face classifiercv::CascadeClassifier faceCascade;faceCascade.load(argv[3]);cv::Mat image cv::imread(argv[1]…

Effective Java 学习笔记--42-44 函数接口及其应用(Lambda与方法引用)

目录 函数接口 标准函数接口 自定义函数接口 函数接口的应用 Lambda表达式 Lambda表达式相比于匿名类的优点 方法引用 函数式接口是只包含了一个抽象方法的接口&#xff0c;这种接口的设计目的是为了支持Lambda表达式为代表的函数输入&#xff0c;在Java中有43个标准的默…

基于SpringBoot的旅游网站系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于JavaSpringBootVueMySQL的旅游网站系统【附源码文档】、…

远程连接Hiveserver2服务

目录 1.修改 core-site.xml 和 hive-site.xml 的配置文件 2.启动HiveServer2服务 3.启动Beeline工具连接Hiveserver2服务 4.利用IDEA工具连接Hiveserver2服务 完成Hive本地模式安装后&#xff0c;可以启动hiveserver2服务进行远程连接和操作Hive。 1.修改 core-site.xml …

ctf Mark loves cat (超详细记录)

分析&#xff1a;首先根据问题名称看不出明显的考点方向&#xff0c;先看了一下源代码&#xff0c;没有flag相关内容 我后面就去尝试sql注入方向&#xff0c;但是试了几个参数发现得到的回显都是一致的&#xff0c;全是主页&#xff0c;显然是做了错误重定向&#xff0c;那我就…

基于SpringBoot+Vue+MySQL的垃圾分类回收管理系统

系统展示 用户界面 管理员界面 系统背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可跨域的鸿沟&#xff0c;信息的传播速度…