torch.cat() stack()函数使用说明,含实例及运行结果

news2024/10/6 14:31:07

torch.cat和stack函数使用说明,含实例及运行结果

  • torch.cat() 函数
    • torch.cat() 函数定义
    • 参数及功能
    • 二维数据实例解释
      • 参数dim=0
      • 参数dim=1
      • 参数dim=-1
  • torch.stack() 函数
    • torch.stack() 函数定义
    • 参数及功能
    • 二维数据实例解释
      • 参数dim=0
      • 参数dim=1
      • 参数dim=2
      • 参数dim=-1
  • 参考博文及感谢

先放张图,如果能看明白就不需要看下面实例解释
在这里插入图片描述

torch.cat() 函数

torch.cat() 函数定义

torch.cat(tensors, dim=0, *, out=None) → Tensor

参数及功能

** tensors** (sequence of Tensors) – 任何相同类型张量的 Python序列
dim (int, optional) – 拼接维度,默认为0

二维数据实例解释

参数dim=0

import torch

T1 = torch.tensor([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
T2 = torch.tensor([[10, 20, 30],
                   [40, 50, 60],
                   [70, 80, 90]])

print(T1.shape)
print("=============================================")
print(torch.cat((T1, T2), dim=0).shape)
print("=============================================")
print(torch.cat((T1, T2), dim=0))

结果为

torch.Size([3, 3])
=============================================
torch.Size([6, 3])
=============================================
tensor([[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 20, 30],
        [40, 50, 60],
        [70, 80, 90]])

可以看到是沿负y轴方向进行拼接

参数dim=1

import torch

T1 = torch.tensor([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
T2 = torch.tensor([[10, 20, 30],
                   [40, 50, 60],
                   [70, 80, 90]])

print(T1.shape)
print("=============================================")
print(torch.cat((T1, T2), dim=1).shape)
print("=============================================")
print(torch.cat((T1, T2), dim=1))

结果为

torch.Size([3, 3])
=============================================
torch.Size([3, 6])
=============================================
tensor([[ 1,  2,  3, 10, 20, 30],
        [ 4,  5,  6, 40, 50, 60],
        [ 7,  8,  9, 70, 80, 90]])

可以看到是沿X轴正方向进行拼接

参数dim=-1

与dim=1相同

torch.stack() 函数

torch.stack() 函数定义

torch.stack(tensors, dim=0, *, out=None) → Tensor

参数及功能

tensors (sequence of Tensors) – 要连接的张量序列
dim (int) – 拼接维度,默认为0

二维数据实例解释

参数dim=0

import torch

T1 = torch.tensor([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

T2 = torch.tensor([[10, 20, 30],
                   [40, 50, 60],
                   [70, 80, 90]])
print(torch.stack((T1, T2), dim=0).shape)
print("=============================================")
print(torch.stack((T1, T2), dim=0))

结果为

torch.Size([2, 3, 3])
=============================================
tensor([[[ 1,  2,  3],
         [ 4,  5,  6],
         [ 7,  8,  9]],

        [[10, 20, 30],
         [40, 50, 60],
         [70, 80, 90]]])

这个是按3维中的第0维拼接,可参考最上面图

参数dim=1

import torch

T1 = torch.tensor([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

T2 = torch.tensor([[10, 20, 30],
                   [40, 50, 60],
                   [70, 80, 90]])
print(torch.stack((T1, T2), dim=1).shape)
print("=============================================")
print(torch.stack((T1, T2), dim=1))

结果为

torch.Size([3, 2, 3])
=============================================
tensor([[[ 1,  2,  3],
         [10, 20, 30]],

        [[ 4,  5,  6],
         [40, 50, 60]],

        [[ 7,  8,  9],
         [70, 80, 90]]])

参数dim=2

import torch

T1 = torch.tensor([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

T2 = torch.tensor([[10, 20, 30],
                   [40, 50, 60],
                   [70, 80, 90]])
print(torch.stack((T1, T2), dim=2).shape)
print("=============================================")
print(torch.stack((T1, T2), dim=2))

结果为

torch.Size([3, 3, 2])
=============================================
tensor([[[ 1, 10],
         [ 2, 20],
         [ 3, 30]],

        [[ 4, 40],
         [ 5, 50],
         [ 6, 60]],

        [[ 7, 70],
         [ 8, 80],
         [ 9, 90]]])

参数dim=-1

结果与dim=2相同

参考博文及感谢

部分内容参考以下链接,这里表示感谢 Thanks♪(・ω・)ノ
参考博文1 torch.cat() 官方文档
https://pytorch.org/docs/1.13/generated/torch.cat.html
参考博文2 torch.stack()官方文档
https://pytorch.org/docs/1.13/generated/torch.stack.html
参考博文3 torch.cat()函数的官方解释,详解以及例子
https://blog.csdn.net/xinjieyuan/article/details/105208352
参考博文4 torch.stack()的官方解释,详解以及例子
https://blog.csdn.net/xinjieyuan/article/details/105205326

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/871323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于Neo4j的使用及其基本命令

关于Neo4j的使用 文章目录 关于Neo4j的使用1、启动方式2、创建新节点,节点内有属性3、创建关系4、查询节点5、查询关系6、删除两个节点的关系7、删除节点8、删除某个标签的全部关系9、某个节点添加属性10、删除节点某个属性 1、启动方式 进入bin目录: …

成人自考-英语二-大纲要求及考试题型及分值详细介绍

感谢内容提供者:金牛区吴迪软件开发工作室 文章目录 一、大纲要求二、考试题型及分值1. 总览2. 样卷【2015年】(1) 阅读判断(2)阅读选择(3)概括段落大意(4)补全句子(5)填句补文(6)填词补文(7)完形补文(8)短文写作 一、大纲要求 二、考试题型及分值 1. 总览 2. 样卷…

视野狭窄--程序员的解决之道

为什么会发生这种情况? 这是我学到的最艰难的一课:辛勤工作和意图并不等同于商业影响力。我太专注于对给定问题的出色解决,而没有停下来考虑我是否在解决正确的问题。我在工程师身上投入的所有时间并没有使我们解决的问题变得更重要。你的主…

射频入门知识-混频器-1

5.4混频电路-视频_哔哩哔哩_bilibili ​​​​​​​

图·c++

数据结构: 邻接矩阵,邻接表 1.图的存储方式:邻接矩阵,邻接表 1.稀疏图和稠密图 2.无向图: n n n 个点,最多 n ( n − 1 ) / 2 n(n-1)/2 n(n−1)/2 条边, 当 m m m 接近 n ( n − 1 ) / 2 …

【面试题】1、总结面试题1

1、Java语言有哪些特点?❀ (1)【面向对象】Java是一种面向对象的语言,支持封装、继承和多态等面向对象的特性。Java特别强调类和对象的关系,要求所有代码都必须位于类中。和Java一样很流行的Python也是面向对象的语言…

NanoPi NEO移植LVGL8.3.5到1.69寸ST7789V屏幕

移植前准备 移植好fbtft屏幕驱动 参考链接:友善之臂NanoPi NEO利用fbtft驱动点亮1.69寸ST7789V2屏幕 获取源码 名称地址描述lvglhttps://github.com/lvgl/lvgl.gitlvgl-8.3.5lv_drivershttps://github.com/lvgl/lv_drivers.gitlv_drivers-6.1.1 创建工程目录 创…

项目实战 — 消息队列(8){网络通信设计①}

目录 一、自定义应用层协议 🍅 1、格式定义 🍅 2、准备工作 🎄定义请求和响应 🎄 定义BasicArguments 🎄 定义BasicReturns 🍅 2、创建参数类 🎄 交换机 🎄 队列 &#x1f38…

CSDN互利共赢玩法实战!!!

csdn项目第一波基本都顺利跑了起来,我们总计找来了一两千个新的项目源码,来让大家变现。 在实战中,主要两个玩法,一个引流,一个付费资源。付费资源门槛越来越高,所以我们这一波升级完成的号,就非…

AKStream+ZLM简单配置

下载AKStream源代码 下载AKStream源代码 git clone https://gitee.com/chatop2020/AKStreamVS2022打开AKStream,低于.net6的版本无法编译通过 打开 .sln 解决方案 如下配置AKStreamWeb 数据库配置: MySQL AKStreamWeb.json中配置 port 是MySQL的端口…

单片机第一季:零基础13——AD和DA转换

1,AD转换基本概念 51 单片机系统内部运算时用的全部是数字量,即0 和1,因此对单片机系统而言,无法直接操作模拟量,必须将模拟量转换成数字量。所谓数字量,就是用一系列0 和1 组成的二进制代码表示某个信号大…

掌握Python的X篇_33_MATLAB的替代组合NumPy+SciPy+Matplotlib

numPy 通常与 SciPy( Scientific Python )和 Matplotlib (绘图库)一起使用,这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。 文章目录 1. numpy1.1 numpy简介1.2 矩阵类型的nparra…

【设计模式】前端控制器模式

前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种…

XML 数据传输格式

目录 XML简介 一、初识XML 1.什么是 XML? 2.XML 和 HTML 之间的差异 3.XML 不会做任何事情 4.通过 XML 您可以发明自己的标签 5.XML 不是对 HTML 的替代 二、XML 用途 1.XML 把数据从 HTML 分离 2.XML 简化数据共享 3.XML 简化数据传输 三、XML 树结构 1.一个 XML 文…

简单介绍C++中的模板

目录 一、泛型编程 泛型编程的概念: 泛型编程举例: 二、函数模板 函数模板的概念: 函数模板的格式: 函数模板的实例化: 隐式实例化: 显式实例化: 模板参数的匹配原则: 三、类模板 类模板的格式定义: 类模…

PyQt5组件之QLabel显示图像和视频

目录 一、显示图像和视频 1、显示图像 2、显示视频 二、QtDesigner 窗口简单介绍 三、相关函数 1、打开本地图片 2、保存图片到本地 3、打开文件夹 4、打开本地文本文件并显示 5、保存文本到本地 6、关联函数 7、图片 “.png” | “.jpn” Label 自适应显示 一、显…

C++ 之 线性插值 贝塞尔曲线 非线性动画

非线性动画在程序,游戏和动画中运用非常广泛,那么我们应该如何实现? 非线性动画上的点在s-t图像上非线性,即不为一次函数,实则为处处连续的曲线 对于此曲线可模拟,这里我们用贝塞尔曲线 一,基本…

Azure DevOps基于 Net6.0 的 WPF 程序如何进行持续集成、持续编译

正文 1, Azure DevOps 创建项目 Project name:”NetCore_WPF_Sample“ Visibility:”Private“(根据实际项目需求) Version control:”Git“ Work item process:”Agile“ 点击 ”Create“…

【linux】2 软件管理器yum和编辑器vim

目录 1. linux软件包管理器yum 1.1 什么是软件包 1.2 关于rzsz 1.3 注意事项 1.4 查看软件包 1.5 如何安装、卸载软件 1.6 centos 7设置成国内yum源 2. linux开发工具-Linux编辑器-vim使用 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行…

【设计模式】MVC 模式

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。View&#xff…