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

  介绍

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

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

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

 Pytorch中torch.cat与火炬。堆栈有什么区别

图1 torch.cat ()

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

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

 Pytorch中torch.cat与火炬。堆栈有什么区别

图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

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

3。例子

1。准备2个张量数据,每个的形状都是(3 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]])

2。测试堆栈函数

打印(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)

可以运行试试:拼接后的张量形状,会根据不同的昏暗的发生变化。

dimshape0[2、3、3] 1[3, 2, 3] 2[3, 3, 2] 3溢出报错

4。总结

<强> 1,函数作用:

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

pytorch的优点

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

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

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