当前位置: 首页 > news >正文

Pytorch基础 - 5. torch.cat() 和 torch.stack()

目录

1. torch.cat(tensors, dim)

2. torch.stack(tensors, dim)

3. 两者不同


torch.cat() 和 torch.stack()常用来进行张量的拼接,在神经网络里经常用到。且前段时间有一个面试官也问到了这个知识点,虽然内容很小很细,但需要了解。

1. torch.cat(tensors, dim)

  • tensors:待拼接的多个张量,可用list, tuple表示
  • dim:待拼接的维度,默认是0
  • 注意:tensors里不同张量对应的待拼接维度的size可以不一致,但是其他维度的size要保持一致。如代码中待拼接维度是0,x和y对应的维度0上的值不一样,但是其他维度上的值(维度1上的值)要保持一致,即都为4,否则会报错。

示例:新生成的tensor在dim=0这个维度进行了拼接,即 3 + 2 = 5,剩余维度保持不变

x = torch.rand(3, 4)
y = torch.rand(2, 4)
xy = torch.cat([x, y], dim=0)   
print(xy.shape)   # torch.Size([5, 4])

2. torch.stack(tensors, dim)

  • tensors:待拼接的多个张量,可用list, tuple表示
  • dim:待拼接的维度,默认是0
  • 注意:tensors里所有张量的维度要保持一致,否则会报错

x = torch.rand(7, 4)
y = torch.rand(7, 4)
z = torch.rand(7, 4)
xy = torch.stack([x, y, z])
print(xy.shape)   # torch.Size([3, 7, 4])

3. 两者不同

从上面的代码结果可看出两者区别:

  • torch.cat会在dim的维度上进行合并,不会扩展出新的维度
  • torch.stack则会在dim的维度上拓展出一个新的维度,然后进行拼接,该维度的大小为tensors的个数
http://www.lryc.cn/news/60179.html

相关文章:

  • 基于AIGC的3D场景创作引擎概述
  • C++算法恢复训练之快速排序
  • 事务的特性
  • Python 计算三角形的面积、Python 阶乘实例
  • C++入门教程||C++ 重载运算符和重载函数||C++ 多态
  • docker+docker-compose+nginx前后端分离项目部署
  • 基于PCA与LDA的数据降维实践
  • 【Hello Network】网络编程套接字(一)
  • 【计算机网络】学习笔记:第二章 物理层(五千字详细配图)【王道考研】
  • 直流有刷电机的电路分析
  • 使用PowerShell自动部署ASP.NetCore程序到IIS
  • Elasticsearch:保留字段名称
  • Qt 套接字类(QTcpSocket和QUdpSocket)解密:迈向 Qt 网络编程之巅
  • Python视频编辑库:MoviePy
  • 课程3:ASP.NET Core 身份验证 - Cookie
  • Visual Studio 2022如何安装和使用MSDN
  • 82.qt qml-2D粒子系统、粒子方向、粒子项(一)
  • 引用的底层原理(汇编指令),引用与指针的联系与区别
  • 磁盘的移臂调度算法
  • 软考第六章 网络互连与互联网
  • C6678-缓存和内存
  • 实操| 前端新人无敲代码开发APP
  • OpenCV图像处理之傅里叶变换
  • Docker网络案例
  • Java实验课的学习笔记(二)类的简单使用
  • 实战案例|聚焦攻击面管理,腾讯安全威胁情报守护头部券商资产安全
  • c++算法初级8——递推
  • Java后端面试题 重难点和被问到没答上来的点(包括java基础、关系型数据库、Redis、计算机网络、Spring、Java多线程、vue等)
  • 易观千帆 | 2023年3月银行APP月活跃用户规模盘点
  • [Android+JetPack] (Java实现) Retrofit2+RxJava3+Paging3+RecyclerView 实现加载网络数据例子 记录