网上很多的示例,都在讨论二维数据(矩阵),单是对于做图像与深度学习的人来说均是三维起步,一般都是4维,下边以4维数据举例

对于pytorch中的堆叠与拼接函数stack与cat,二者还是有一定的不同

torch.cat这是一个拼接函数(姑且这么说)

直接上例子

a0=torch.Tensor([[[[1,1,1,1],[2,2,2,2]]]])
a1=torch.Tensor([[[[3,3,3,3],[4,4,4,4]]]])
torch.Size([1, 1, 2, 4])torch.cat((a0,a1),dim=0).type(torch.FloatTensor)tensor([[[[1., 1., 1., 1.],[2., 2., 2., 2.]]],[[[3., 3., 3., 3.],[4., 4., 4., 4.]]]])
torch.Size([2, 1, 2, 4])

上边dim=0,为以第一维为基准拼接,对于一个张量的维度,有几个放括号就是几维,上边例子a0与a1均为4维张量,因此以第0维拼接就是将第一个中括号内的内容进行拼接。最终的尺度大小为(2,1,2,4)

a0=torch.Tensor([[[[1,1,1,1],[2,2,2,2]]]])
a1=torch.Tensor([[[[3,3,3,3],[4,4,4,4]]]])
torch.cat((a0,a1),dim=1).type(torch.FloatTensor)tensor([[[[1., 1., 1., 1.],[2., 2., 2., 2.]],[[3., 3., 3., 3.],[4., 4., 4., 4.]]]])
torch.Size([1, 2, 2, 4])

以第1维进行拼接,将第二个括号内的内容进行拼接

a0=torch.Tensor([[[[1,1,1,1],[2,2,2,2]]]])
a1=torch.Tensor([[[[3,3,3,3],[4,4,4,4]]]])
torch.cat((a0,a1),dim=2).type(torch.FloatTensor)
tensor([[[[1., 1., 1., 1.],[2., 2., 2., 2.],[3., 3., 3., 3.],[4., 4., 4., 4.]]]])
torch.Size([1, 1, 4, 4])
a0=torch.Tensor([[[[1,1,1,1],[2,2,2,2]]]])
a1=torch.Tensor([[[[3,3,3,3],[4,4,4,4]]]])
torch.cat((a0,a1),dim=3).type(torch.FloatTensor)
tensor([[[[1., 1., 1., 1., 3., 3., 3., 3.],[2., 2., 2., 2., 4., 4., 4., 4.]]]])
torch.Size([1, 1, 2, 8])

以上为torch.cat的使用方法,两个tensor的维度必须一致,最终生成的张量的维度也没有变化,但是torch.cat就不一样了

torch.stack

依然使用上边的例子,看看这个函数的功能

a0=torch.Tensor([[[[1,1,1,1],[2,2,2,2]]]])
a1=torch.Tensor([[[[3,3,3,3],[4,4,4,4]]]])
torch.stack((a0,a1),dim=0).type(torch.FloatTensor)tensor([[[[[1., 1., 1., 1.],[2., 2., 2., 2.]]]],[[[[3., 3., 3., 3.],[4., 4., 4., 4.]]]]])
torch.Size([2, 1, 1, 2, 4])
a0=torch.Tensor([[[[1,1,1,1],[2,2,2,2]]]])
a1=torch.Tensor([[[[3,3,3,3],[4,4,4,4]]]])
torch.stack((a0,a1),dim=1).type(torch.FloatTensor)
tensor([[[[[1., 1., 1., 1.],[2., 2., 2., 2.]]],[[[3., 3., 3., 3.],[4., 4., 4., 4.]]]]])
torch.Size([1, 2, 1, 2, 4])

从上边两个例子,可以看出,对于torch.stack来说,会先将原始数据维度扩展一维,然后再按照维度进行拼接,具体拼接操作同torch.cat类似

贴个torch.stack()官方文档的截图

dim代表沿着哪个维度进行堆叠

举个例子:

dim=0时:(dim不写时,默认为0)

a: 2x3 ; b: 2x3 ; c: 2x2x3

dim=1时:略

dim=2时:

a: 2x3 ; b: 2x3 ; c: 2x3x2

总结

参考链接

https://zhuanlan.zhihu.com/p/70035580

https://www.pianshen.com/article/10611294719/

torch.cat() 和 torch.stack()相关推荐

  1. torch.cat 和 torch.stack

    torch.cat 和 torch.stack看起来相似但是性质还是不同的 使用python中的list列表收录tensor时,然后将list列表转化成tensor时,会报错.这个时候就要使用torc ...

  2. pytorch学习——torch.cat和torch.stack的区别

    合并tensors torch.cat 沿着特定维数连接一系列张量. torch.stack 沿新维度连接一系列张量. torch.cat 在给定维度中连接给定的 seq 个张量序列. 所有张量必须具 ...

  3. 2021.08.22学习内容torch.cat()和torch.stack()函数

    torch.cat()函数 将两个张量(tensor)拼接在一起,cat是concatnate的意思,即拼接,联系在一起. def cat(tensors: List[torch.Tensor], d ...

  4. 【深度学习】特征融合的重要方法 | 张量的拼接 | torch.cat()函数 | torch.add(函数

    文章目录 前言 一.torch.cat()函数 拼接只存在h,w(高,宽)的图像 二.torch.cat() 拼接存在c,h,w(通道,高,宽)的图像 三.torch.add()使张量对应元素直接相加 ...

  5. Pytorch教程(十九)torch.cat与torch.stack的区别

    这一节,将分析拼接(concatenating)和叠加(stacking)张量的区别. 首先看三个例子,一个是pytorch,一个是TensorFlow,一个是numpy. stack和cat张量之间 ...

  6. pytorch拼接函数:torch.stack()和torch.cat()--详解及例子

    原文链接: https://blog.csdn.net/xinjieyuan/article/details/105205326 https://blog.csdn.net/xinjieyuan/ar ...

  7. torch.stack(), torch.cat()用法详解

    torch.stack(), torch.cat()用法详解 if __name__ == '__main__':import torchx_dat = torch.tensor([[1, 2], [ ...

  8. 多维tensor/numpy array的拼接(np.stack, torch.cat)

    对于numpy array 当有如下情景,我需要4维tensor,(b,c,w,h), 而写的程序是单张图片遍历的,即每张图片(c,w,h),这时,就需要先用一个list,然后每次append,到最后 ...

  9. torch.cat torch.stack

    文章目录 1. torch.cat 在原来的维度上堆叠 2. torch.stack 在新的维度上堆叠 3. 小结: 1. torch.cat 在原来的维度上堆叠 cat是concatnate的意思: ...

最新文章

  1. [置顶] 单键模式的C++描述
  2. C++11中Lambda表达式的使用
  3. 电脑cmd命令大全_电脑定时关机的方法(2)
  4. mysql表空间权限_MySQL InnoDB表空间加密示例详解
  5. 1031. 查验身份证(15)
  6. 鸣人的影分身(信息学奥赛一本通-T1303)
  7. 吃了核辐射食物怎么办_我们经常吃的猪肉,相当一部分是核辐射照过的,会对身体有害吗...
  8. 第六章:如何在SpringBoot项目中使用拦截器
  9. 邬贺铨/余晓晖/田溯宁…千家从业者,数十位行业大咖共同烹制了一场怎样的AIoT“盛宴”?
  10. java 7个数排序_7 Java 快速排序
  11. Linux中下载,压缩,解压等命令
  12. kiss原则包括什么_KISS原则
  13. 三维随机介质模型matlab,基于随机介质理论的复合材料孔隙二维形貌几何仿真
  14. 四川省中小学计算机台球标准,《四川省中小学教育技术装备标准》.xls
  15. 一款商城APP开发需要多少钱?
  16. 奥鹏20春季1903C语言,奥鹏20春学期《并行程序设计》在线作业
  17. VS1005 HiRes 高清录音开发模块 BOB MK2
  18. matlab判断星期几的语句,计算某一天是星期几的matlab程序
  19. Qt中鼠标的双击事件和单击事件的实现方式
  20. Unity灯光(light)

热门文章

  1. Oracle 中的Userenv() 达梦中如何处理?
  2. 苹果发布的是iPphone 4s,而不是iPhone 5
  3. Vue速成day01
  4. 在物联网中应用机器学习
  5. 【mud】set (long格式造成的进入mud之后“你的四周灰蒙蒙地一片,什么也没有。”
  6. 迭代最小二乘拟合椭圆
  7. H3C交换机如何进行批量端口配置
  8. 倚天鸿蒙系统,倚天屠龙记强化系统详解
  9. 安卓app上架各大应用商店
  10. JavaWeb 第八章 Day11天2020080605018