今天就跟大家聊聊有关Pytorch中torch.cat与torch.stack有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
torch.cat()函数可以将多个张量拼接成一个张量.torch.cat()有两个参数,第一个是要拼接的张量的列表或是元组;第二个参数是拼接的维度。
torch.cat()的示例如下图1所示
图1 torch.cat ()
torch.stack()函数同样有张量列表和维度两个参数.stack与猫的区别在于,torch.stack()函数要求输入张量的大小完全相同,得到的张量的维度会比输入的张量的大小多1,并且多出的那个维度就是拼接的维度,那个维度的大小就是输入张量的个数。
torch.stack()的示例如下图2所示:
图2 torch.stack ()
<强>补充:torch.stack()的官方解释,详解以及例子强>
可以直接看最下面的【3。例子】,再回头看前面的解释
在pytorch中,常见的拼接函数主要是两个,分别是:
1,堆栈()
2,猫()
实际使用中,这两个函数互相辅助:关于猫()参考torch.cat(),但是本文主要说堆栈()。
函数的意义:使用栈可以保留两个信息:[1。序列]和[2。张量矩阵]信息,属于【扩张再拼接】的函数。
形象的理解:假如数据都是二维矩阵(平面),它可以把这些一个个平面(矩)阵按第三维(例如:时间序列)压成一个三维的立方体,而立方体的长度就是时间序列长度。
该函数常出现在自然语言处理(NLP)和图像卷积神经网络(CV)中。
1。堆栈()
官方解释:沿着一个新维度对输入张量序列进行连接。序列中所有的张量都应该为相同形状。
浅显说法:把多个2维的张量凑成一个三维的张量;多个3维的凑成一个4维的张量…以此类推,也就是在增加新的维度进行堆叠。
outputs =, torch.stack(输入,,暗=?),→,张量
参数
输入:待连接的张量序列。
注:python的序列数据只有列表和元组。
暗:新的维度,必须在0到len(输出)之间。
注:len(输出)是生成数据的维度大小,也就是输出的维度值。
2。重点
函数中的输入输入只允许是序列;且序列内部的张量元素,必须形状相等
- - - - -举例:[tensor_1 tensor_2, . .)或者(tensor_1、tensor_2 . .),且必须tensor_1。形状==tensor_2.shape
暗是选择生成的维度,必须满足0 & lt;=dim 不懂的看例子,再回过头看就懂了。 1。准备2个张量数据,每个的形状都是(3 3) 2。测试堆栈函数 可以运行试试:拼接后的张量形状,会根据不同的昏暗的发生变化。 <强> 1,函数作用:强> 函数堆栈()对序列数据内部的张量进行扩维拼接,指定维度由程序员选择,大小是生成后数据的维度区间。 1. pytorch是相当简洁且高效快速的框架;2。设计追求最少的封装;3。设计符合人类思维,它让用户尽可能地专注于实现自己的想法;4。与谷歌的Tensorflow类似,公平的支持足以确保pytorch获得持续的开发更新;5。PyTorch作者亲自维护的论坛供用户交流和求教问题6。入门简单 看完上述内容,你们对Pytorch中torch.cat与torch.stack有什么区别有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。 3。例子
#,假设是时间步T1的输出
时间=T1 torch.tensor ([[1, 2, 3]。
,,,,,,,,,(4,5,6),
,,,,,,,,,(7,8,9]])
#,假设是时间步T2的输出
时间=T2 torch.tensor ([[30] 10, 20,,,
,,,,,,,,,(40岁,50岁,60岁),
,,,,,,,,,(70,,80,,90]])
打印(torch.stack ((T1, T2),暗=0).shape)
打印(torch.stack ((T1, T2),暗=1).shape)
print (torch.stack ((T1, T2),暗=2).shape)
打印(torch.stack ((T1, T2),昏暗的=3).shape)
#,输出:
torch.Size ([2, 3,, 3])
torch.Size ([3,, 2,, 3])
torch.Size ([3,, 3,, 2])
& # 39;选择的dim> len(输出),所以报错& # 39;
IndexError: Dimension out  of range (expected 用be 拷贝range of 3,, 2,, but got 3)
4。总结
pytorch的优点
Pytorch中torch.cat与torch.stack有什么区别