torch.stack 张量维度的变化

news/2024/11/14 12:43:14 标签: 深度学习, pytorch, 人工智能

torch.stack 是 PyTorch 中用于将一系列张量沿一个新的维度堆叠的函数。与 torch.cat 不同的是,torch.stack会在指定的维度上增加一个新的维度,而不是将张量直接拼接。

基本用法

语法:

torch.stack(tensors, dim=0)
  • tensors: 一个张量列表,包含多个形状相同的张量(shape 必须相同)。
  • dim: 新增维度的位置,默认是 0

举例说明

假设有三个形状为 (2, 3) 的张量:

import torch

a = torch.tensor([[1, 2, 3], [4, 5, 6]])
b = torch.tensor([[7, 8, 9], [10, 11, 12]])
c = torch.tensor([[13, 14, 15], [16, 17, 18]])

沿 dim=0 堆叠

stacked = torch.stack([a, b, c], dim=0)
print(stacked.shape)  # torch.Size([3, 2, 3])
  • 在维度 0 上增加一个新的维度,原始的 (2, 3) 形状变成 (3, 2, 3)
  • stacked 的第 0 维度有 3 个元素,对应原来的 abc 张量。

沿 dim=1 堆叠

stacked = torch.stack([a, b, c], dim=1)
print(stacked.shape)  # torch.Size([2, 3, 3])
  • 新的维度插入到原第 1 维的位置。
  • stacked 的第 1 维度有 3 个元素,对应原来的 abc 张量。

沿 dim=2 堆叠

stacked = torch.stack([a, b, c], dim=2)
print(stacked.shape)  # torch.Size([2, 3, 3])
  • 新的维度插入到原第 2 维的位置,形状变为 (2, 3, 3)

torch.stack 的形状变化总结

假设堆叠前的每个张量形状是 (A, B, C),在 dim=0dim=1 和 dim=2 堆叠后的形状分别为:

  • dim=0(N, A, B, C)
  • dim=1(A, N, B, C)
  • dim=2(A, B, N, C)

其中 N 是堆叠的张量数量。

和torch.cat函数的区别:

cat:在指定维度拼接多个张量。不增加维度。

c1 = torch.tensor([[1, 2], [3, 4]])
c2 = torch.tensor([[5, 6], [7, 8]])
c_cat = torch.cat([c1, c2], dim=0)  # shape (4, 2)


http://www.niftyadmin.cn/n/5751923.html

相关文章

如何让网站支持多语言

在开发支持多语言的网站时,存储和管理不同语言的内容是关键。以下是几种常用的方法: 数据库存储 方案:在数据库中为多语言内容设计表结构。通常会有一个 translations 表,包含以下字段: id:主键content_id&…

Unity3D学习FPS游戏(12)敌人检测和攻击玩家

前言:上一篇实现了敌人能动,有了点乐趣,但是敌人和玩家没什么对抗性。本篇将实现敌人追击玩家,并攻击玩家。 敌人攻击玩家 敌人检测玩家目标思路-碰撞检测的Trigger触发实现 敌人攻击目标思路-模仿玩家发射子弹的思路实现 效果 敌…

深度解读UI设计:从概念到实践一站式知晓

在当今数字化的时代,我们与各种电子设备和软件应用的交互日益频繁。而在这背后,UI设计(User Interface Design,用户界面设计)起着至关重要的作用,它直接影响着用户与产品之间的交互体验和视觉感受。那么&am…

0-Equity-Transformer:求解NP-Hard Min-Max路由问题的顺序生成算法(AAAI-24)(完)(code)

文章目录 AbstractIntroduction问题表述Methodology多智能体位置编码公平上下文编码训练方案ExperimentsmTSP的性能评估mPDP的性能评估Related WorkConclusionAbstract 最小最大路由问题旨在通过智能体合作完成任务来最小化多个智能体中最长行程的长度。这些问题包括对现实世界…

Ubuntu 22.04 ftp搭建

1、安装ftp服务 sudo apt-get install vsftpd 2、FTP安装完成后,会默认为我们创建用户名为ftp的用户,默认无密码。我们需要为其设置密码。输入 sudo passwd ftp 3、创建ftp用户的home目录 sudo mkdir /home/ftp 4、设置ftp目录的权限 sudo chmod 777 /ho…

Python毕业设计选题:基于django+vue的仓库管理系统设计

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 公告信息管理 产品信息管理 产品类型管理 用户…

陈文自媒体:65岁大爷,3年搞了150多万!

昨天下班去跑步,偶遇一个小区的大爷,他们两夫妻也去跑步,热情的我和他们聊起来了。 两夫妻已经60了,年纪和我老爸一个年纪的,从他们走路的动作来看,我认为他们的身体还是不错,简单介绍一下这个…

JSqlParser、JavaCC实操

1. 背景 项目中使用mubatis-plus,有个sql报错,信息如下 通过debug我发现是第四行代码报错 net.sf.jsqlparser.parser.CCJSqlParserUtil#parseStatements public static Statements parseStatements(String sqls) throws JSQLParserException {CCJSqlP…