iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Pytorch中 torch.cat与torch.stack有什么区别
  • 170
分享到

Pytorch中 torch.cat与torch.stack有什么区别

2023-06-15 04:06:29 170人浏览 安东尼
摘要

今天就跟大家聊聊有关PyTorch中 torch.cat与torch.stack有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。torch.cat()函数可以将多个张量拼接成

今天就跟大家聊聊有关PyTorch中 torch.cat与torch.stack有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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

torch.cat()的示例如下图1所示

Pytorch中 torch.cat与torch.stack有什么区别

图1 torch.cat()

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

torch.stack()的示例如下图2所示:

Pytorch中 torch.cat与torch.stack有什么区别

图2 torch.stack()

补充:torch.stack()的官方解释,详解以及例子

可以直接看最下面的【3.例子】,再回头看前面的解释

在pytorch中,常见的拼接函数主要是两个,分别是:

stack()

cat()

实际使用中,这两个函数互相辅助:关于cat()参考torch.cat(),但是本文主要说stack()。

函数的意义:使用stack可以保留两个信息:[1. 序列] 和 [2. 张量矩阵] 信息,属于【扩张再拼接】的函数。

形象的理解:假如数据都是二维矩阵(平面),它可以把这些一个个平面(矩阵)按第三维(例如:时间序列)压成一个三维的立方体,而立方体的长度就是时间序列长度。

该函数常出现在自然语言处理NLP)和图像卷积神经网络(CV)中。

1. stack()

官方解释:沿着一个新维度对输入张量序列进行连接。 序列中所有的张量都应该为相同形状。

浅显说法:把多个2维的张量凑成一个3维的张量;多个3维的凑成一个4维的张量…以此类推,也就是在增加新的维度进行堆叠。

outputs = torch.stack(inputs, dim=?) → Tensor

参数

inputs : 待连接的张量序列。

注:python的序列数据只有list和tuple。

dim : 新的维度, 必须在0到len(outputs)之间。

注:len(outputs)是生成数据的维度大小,也就是outputs的维度值。

2. 重点

函数中的输入inputs只允许是序列;且序列内部的张量元素,必须shape相等

----举例:[tensor_1, tensor_2,..]或者(tensor_1, tensor_2,..),且必须tensor_1.shape == tensor_2.shape

dim是选择生成的维度,必须满足0<=dim<len(outputs);len(outputs)是输出后的tensor的维度大小

不懂的看例子,再回过头看就懂了。

3. 例子

准备2个tensor数据,每个的shape都是[3,3]

# 假设是时间步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]])

测试stack函数

print(torch.stack((T1,T2),dim=0).shape)print(torch.stack((T1,T2),dim=1).shape)print(torch.stack((T1,T2),dim=2).shape)print(torch.stack((T1,T2),dim=3).shape)# outputs:torch.Size([2, 3, 3])torch.Size([3, 2, 3])torch.Size([3, 3, 2])'选择的dim>len(outputs),所以报错'IndexError: Dimension out of range (expected to be in range of [-3, 2], but Got 3)

可以运行试试:拼接后的tensor形状,会根据不同的dim发生变化。

dimshape
0[2, 3, 3]
1[3,2, 3]
2[3, 3,2]
3溢出报错

4. 总结

1、函数作用:

函数stack()对序列数据内部的张量进行扩维拼接,指定维度由程序员选择、大小是生成后数据的维度区间。

pytorch的优点

1.PyTorch是相当简洁且高效快速的框架;2.设计追求最少的封装;3.设计符合人类思维,它让用户尽可能地专注于实现自己的想法;4.与google的Tensorflow类似,FaiR的支持足以确保PyTorch获得持续的开发更新;5.PyTorch作者亲自维护的论坛 供用户交流和求教问题6.入门简单

看完上述内容,你们对Pytorch中 torch.cat与torch.stack有什么区别有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: Pytorch中 torch.cat与torch.stack有什么区别

本文链接: https://www.lsjlt.com/news/277411.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pytorch中 torch.cat与torch.stack有什么区别
    今天就跟大家聊聊有关Pytorch中 torch.cat与torch.stack有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。torch.cat()函数可以将多个张量拼接成...
    99+
    2023-06-15
  • 聊聊Pytorch torch.cat与torch.stack的区别
    torch.cat()函数可以将多个张量拼接成一个张量。torch.cat()有两个参数,第一个是要拼接的张量的列表或是元组;第二个参数是拼接的维度。 torch.cat()的示例如...
    99+
    2024-04-02
  • PyTorch与TensorFlow有什么区别
    PyTorch和TensorFlow是两个广泛使用的深度学习框架,它们有一些区别,包括以下几点: 动态图 vs 静态图:PyTor...
    99+
    2024-03-06
    PyTorch
  • Torch与PyTorch有何区别
    Torch是一个由Facebook开发的深度学习框架,PyTorch是基于Torch的Python接口。PyTorch提供了更加灵活...
    99+
    2024-04-02
  • tensorflow与pytorch的区别是什么
    TensorFlow和PyTorch是两个流行的深度学习框架,它们在设计和使用上有一些不同: 静态计算图 vs 动态计算图:Te...
    99+
    2024-03-12
    tensorflow
  • pytorch中.to(device) 和.cuda()有什么区别
    这篇文章主要介绍了pytorch中.to(device) 和.cuda()有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。原理.to(device) 可以指定CPU ...
    99+
    2023-06-15
  • $*与$@中Shell中有什么区别
    这篇文章给大家介绍$*与$@中Shell中有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。当 $* 和 $@ 不被双引号" "包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据...
    99+
    2023-06-06
  • Theano与TensorFlow和PyTorch的区别是什么
    Theano、TensorFlow和PyTorch都是用于深度学习的流行深度学习框架,它们都有各自的优点和特点。以下是它们之间的主要...
    99+
    2024-04-02
  • PyTorch中的LSTM和GRU模块有什么区别
    参数数量:LSTM模块通常比GRU模块有更多的参数,因此在训练中需要更多的计算资源和时间。 训练时间:由于LSTM模块的参数...
    99+
    2024-03-05
    PyTorch
  • CSS中class与id有什么区别
    CSS中class与id有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Class 在程序中称“类”,同时在CSS中也书面语也叫“类”。在CSS样式中以...
    99+
    2023-06-09
  • mysql中LEAVE与ITERATE有什么区别
    mysql中LEAVE与ITERATE有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。LEAVE语句LEAVE语句主要用于跳出循环控制。其语法形式如下:LEAVE la...
    99+
    2023-06-14
  • JavaScript中window与document有什么区别
    这篇文章将为大家详细讲解有关JavaScript中window与document有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript可以做什么1.可以使网页具有交互性...
    99+
    2023-06-14
  • PyTorch中view()与 reshape()的区别详析
    目录前言一、PyTorch中tensor的存储方式1、PyTorch张量存储的底层原理2、PyTorch张量的步长(stride)属性二、对“视图(view)&rdquo...
    99+
    2024-04-02
  • Java中的(==)与equals有什么区别
    本篇内容主要讲解“Java中的(==)与equals有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的(==)与equals有什么区别”吧!j...
    99+
    2024-04-02
  • Python中w+与r+有什么区别
    今天小编给大家分享一下Python中w+与r+有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • css中display:none与visibility:hidden有什么区别
    今天小编给大家分享一下css中display:none与visibility:hidden有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望...
    99+
    2024-04-02
  • Java中Struts2与Webwork有什么区别
    这篇文章主要介绍Java中Struts2与Webwork有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!从某种程度上来看,Struts 2是WebWork的升级,而不是Struts 1的升级,甚至在Apach...
    99+
    2023-06-17
  • css中id与class有什么区别
    本篇文章给大家分享的是有关css中id与class有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。css的基本语法是什么css的基本语法是:1、css规则由选择器和一条...
    99+
    2023-06-14
  • ajax中responseText与responseXML有什么区别
    responseText是一个字符串,包含服务器响应的文本内容。它可以是HTML、XML、JSON等形式的文本。responseXM...
    99+
    2023-08-25
    ajax
  • jQuery中next与nextAll有什么区别
    jQuery中next与nextAll有什么区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作