pytorch如何向tensor结尾添加元素或维度--torch.cat()、torch.unsqueeze()的用法

2024-03-25 10:28

本文主要是介绍pytorch如何向tensor结尾添加元素或维度--torch.cat()、torch.unsqueeze()的用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

示例1 矢量后增加元素

示例2 tensor维度增加1

示例3 另一种替代unsqueeze的方法


示例1 矢量后增加元素

使用torch.cat()函数

p=torch.Tensor([1,5,0])
p=torch.cat((p, torch.Tensor([4])), 0)

结果:

这里,cat的第一个输入变量用()包绕,里面至少有两个tensor,这两个tensor按照先后次序连接,形成新的tensor,作为返回值。cat的第二个变量表示连接的维度。在本例中,维度=0。0意味着新元素4将沿着1,5,0的方向连接下去。此时,torch,Tensor([4])的size可以不等于p--p含有三个变量,而torch,Tensor([4])显然只有一个变量。这是因为新元素在沿着1,5,0方向拓展。你也可以让维度=-1,效果与0相同。

示例2 tensor维度增加1

p的布局是1,5,0  现在想把p变为二维:

1,5,0

4,4,4

下面的操作不合法:

不合法的原因:

可见,p只是一个三元矢量,没有其他的维度,当然也就不能沿着新维度增加了。

想要给p增加维度,首先做unsqeeze操作:

p =torch.unsqueeze(p, 0)

 原来p是沿着1,5,0  ----->增加的,这是p唯一的维度。unsqueeze之后,[1,5,0]成为p的第一个元素,下面可以再增加一个三元tensor,接在[1,5,0]后面。

增加[4,4,4]:(注意,这里加入的其实是[[4,4,4]])

可见,添加成功。

在加入[4,4,4]之后,[1,5,0]和[4,4,4]都变成了q的元素,所以q的增长方向变成了向下:

[1,5,0]

[4,4,4]

 |

 |

V

注意,pytorch要求相连接的两个tensor维度数相同,否则报错。所以增加的是[[4,4,4]],而不是[4,4,4]。但是,仅仅是要求维度相同,尺寸可以不同(严格来说,是增加方向的尺寸可以不同):

如下图,q已经是2行3列的tensor了,但是还可给它添加1行3列的[4,4,4]

示例3 另一种替代unsqueeze的方法

p=p[None,:]

这篇关于pytorch如何向tensor结尾添加元素或维度--torch.cat()、torch.unsqueeze()的用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/844705

相关文章

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s