PyTorch的10个基本张量操作

news2024/11/15 15:41:58

PyTorch是一个基于python的科学计算包。它的灵活性允许轻松集成新的数据类型和算法,并且框架也是高效和可扩展的,下面我们将介绍一些Pytorch的基本张量操作。

Tensors

张量Tensors是一个向量,矩阵或任何n维数组。这是深度学习的基本数据结构,它们非常类似于数组和矩阵,我们可以通过它们有效地对大型数据集进行数学运算。张量可以表示为矩阵,也可以表示为矢量、标量或高维数组。

我们可以把张量想象成一个包含标量或其他数组的简单数组。在PyTorch上,张量是一个非常类似于ndarry的结构,不同之处在于它们能够在GPU上运行,这极大地加快了计算过程。

1、 tensor()

我们一般都会使用tensor()方法创建张量:

 torch.tensor([[3, 6], [2, 4.]])
 tensor([[3., 6.],
         [2., 4.]])

这里要保证传递的python数组维度是相同的,例如下面就会报错

 torch.tensor([[1, 2], [3, 4, 5]]) 

2、randint ()

randint()方法返回一个张量,其中充满了给定形状在低(包含)和高(不包含)之间均匀分布的随机整数。形状它可以是一个元组或包含非负成员的列表。low的默认值是0。当只传递一个int参数时,默认情况下low获取值0,high获取传递的值。

 torch.randint(2,5, (2,2)) 
 tensor([[2, 4],
         [2, 4]])

3、complex()

complex()方法接受两个参数(real和image)并返回一个复数张量,复数实部real,虚部image,其中实部和虚部都是具有相同数据类型和相同形状的张量。

 a_real = torch.rand(2, 2) 
 print(a_real) 
 a_imag = torch.rand(2, 2) 
 print(a_imag) 
 a_complex_tensor = torch.complex(a_real, a_imag) 
 print(a_complex_tensor)
 
 tensor([[0.4356, 0.7506],
         [0.5335, 0.6262]])
 tensor([[0.1342, 0.0804],
         [0.2047, 0.0685]])
 tensor([[0.4356+0.1342j, 0.7506+0.0804j],
         [0.5335+0.2047j, 0.6262+0.0685j]])

如果实部和虚部形状不同则会报错:

 real = torch.rand(1, 2) 
 print(real) 
 imag = torch.rand(0) 
 print(imag) 
 complex_tensor = torch.complex(real, imag) 
 print(complex_tensor)

4、reshape()

reshape可以更改张量形状,它返回与指定数组相同的数据,但具有不同的指定维度大小。

 a = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8])
 print(a) 
 print(a.reshape([4, 2]))
 
 tensor([1, 2, 3, 4, 5, 6, 7, 8])
 tensor([[1, 2],
         [3, 4],
         [5, 6],
         [7, 8]])

如果维度不匹配则会报错

 a = torch.tensor([[1,2,3],[4,5,6]])
 torch.reshape(a, (6))

5、view()

view()用于在二维格式行和列中更改张量。我们必须指定要行数和列数。

 a=torch.FloatTensor([24, 56, 10, 20, 30,                      
                     40, 50, 1, 2, 3, 4, 5])  
 
 print(a)
 print(a.view(4, 3))
 
 tensor([24., 56., 10., 20., 30., 40., 50.,  1.,  2.,  3.,  4.,  5.])
 tensor([[24., 56., 10.],
         [20., 30., 40.],
         [50.,  1.,  2.],
         [ 3.,  4.,  5.]])
reshape

view

都是用于改变张量形状的操作,但它们之间有一些关键的区别。

**

view

:**

  • view是一个对张量进行重新视图的方法。
  • 它返回一个新的张量,该张量与原始张量共享相同的数据,但形状可能发生改变。
  • view操作要求新形状的元素数量必须与原张量相同,否则会引发错误。
  • view可以用于改变张量形状,但仅当原始张量的数据在内存中是连续的时候。

**

reshape

:**

  • reshape函数也用于改变张量形状。
  • view不同,reshape返回一个新的张量,而不共享原张量的数据。它总是返回一个新的张量,即使数据在内存中是连续的。
  • reshape允许在元素数量相同的情况下改变形状,因为它可以自动推断缺失的维度大小。

6、take()

take会根据给定的索引选择张量并返回。输入张量被看作是一维张量。结果的形状与指标的形状相同

 a = torch.tensor([[1,2,3],
                   [3, 4,7],
                   [4,5,6]])
 torch.take(a, torch.tensor([1,4,5]))
 
 tensor([2, 4, 7])

如果索引超过了张量的长度则会报错

 a = torch.tensor([[1,2,3],
                   [3, 4,7],
                   [4,5,6]])
 torch.take(a, torch.tensor([0,3,6,8,10]))

7、unbind()

unbind可以用来移除一个张量维度。它将返回一个元组,包含给定维度上的所有切片,也就是说会将张量变成一个张量的列表

 a = torch.tensor([[1,2,3],
                   [3, 4,7],
                   [4,5,6]])
 torch.unbind(a)
 
 (tensor([1, 2, 3]), tensor([3, 4, 7]), tensor([4, 5, 6]))

8、 reciprocal()

reciprocal返回一个新的张量与输入元素的倒数。

 torch.reciprocal(torch.tensor([[1.6,2.5],[3,4],[5,6]]))
 
 tensor([[0.6250, 0.4000],
         [0.3333, 0.2500],
         [0.2000, 0.1667]])

9、t ()

转置是翻转张量轴的过程。它涉及到交换二维张量的行和列,或者更一般地说,交换任何维度张量的轴。

 E = torch.tensor([ [3, 8], [5, 6]])
 F = torch.t(E)
 print(E)
 print(F)
 tensor([[3, 8],
         [5, 6]])
 tensor([[3, 5],
         [8, 6]])

10、cat()

张量运算中的cat是将两个或多个张量沿特定维度连接起来形成一个更大张量的过程。得到的张量有一个新的维度,它是输入张量的原始维度的连接。

 a = torch.tensor([[1, 2], [3, 4]])
 b = torch.tensor([[5, 6]])
 
 c = torch.cat((a, b), dim=0)
 print(c)
 
 tensor([[1, 2],
         [3, 4],
         [5, 6]])

https://avoid.overfit.cn/post/3d344b08f8c1454b869ba222079e4ea7

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

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

相关文章

企业计算机服务器中了halo勒索病毒如何解密,halo勒索病毒数据恢复

对于众多的企业来说,数据是一个企业的发展的根基,通过数据可以更好地规划调整企业的发展方向,提高企业生产效率。但网络是一把双刃剑,网络技术的发展不仅会为企业带来极大便利,但也为企业数据安全带来严重威胁。近期&a…

谈谈BlueFS

目录 前言数据结构标识一个文件文件系统的全局记录事务记录超级块 启动流程磁盘管理读写流程创建文件流程为文件写数据把数据下刷到磁盘读流程 参考资料 前言 BlueFS具体是个什么东西呢? 如上图,在Ceph里,使用BlueStore作为默认的存储引擎。…

LLM(大语言模型)——大模型简介

目录 概述 发展历程 大语言模型的概念 LLM的应用和影响 大模型的能力、特点 大模型的能力 涌现能力(energent abilities) 作为基座模型支持多元应用的能力 支持对话作为统一入口的能力 大模型的特点 常见大模型 闭源LLM(未公开源…

datax离线同步oracle表到clickhouse实践1

时间:2024.01 目录1、安装启动 oracle19c 容器 2、rpm包安装clickhouse 3、datax安装 4、datax同步 目标库根据要同步的表,按照clickhouse建表规范建表 编写json文件 编写增量同步shell脚本,加入 crond 定时任务 1、安装启动 oracle19c 容器…

关于如何在Mac上安装Windows,看这篇文章就差不多了

启动转换(Boot Camp)助手可以让你在一些Mac电脑上安装Windows并引导到其中,就像在普通电脑上一样。现代苹果硅型号(M1、M2等)不支持启动转换助手,必须使用其他方法来运行Windows。 可以在M1或M2 Mac上使用启动转换助手吗 只有当Mac上有Intel(x86)处理器时,才能使用启…

Arcgis使用过程中常见问题解决方法

Arcgis无法连接数据库/数据库连接或创建失败解决方法 最近在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败;无法创建新的数据库,权限被拒绝(如下图)。 出现这个原因是你所用的电脑系统文件dao360.…

生存类游戏《幻兽帕鲁》从部署服务器到开始体验全过程

SteamDB数据显示,《幻兽帕鲁》上线24小时内,在线人数峰值便突破200万,跻身Steam历史排行榜第二位。随着热度进一步发酵,《幻兽帕鲁》官方发布推文称,游戏发售不到6天,销量已经突破了 800万份。欢迎大家在阿…

香港公司员工遭遇2亿港币Deepfake诈骗; 阿里巴巴Qwen1.5震撼发布;通义千问App推新功能迎佳节

🦉 AI新闻 🚀 香港公司员工遭遇2亿港币Deepfake诈骗 摘要:近日,香港一家英国跨国企业的员工被Deepfake技术仿造的视频诈骗,损失2亿港币。骗子通过伪造高管的面貌和声音,用视频会议的形式命令其转账&#…

双非本科准备秋招(17.1)—— 力扣二叉树

1、257. 二叉树的所有路径 要求返回根节点到叶子节点的所有路径,这里用前序遍历就好。 每次递归前,都让字符串s加上当前节点的值和“->”,然后判断是否为叶子节点,如果是的话,说明这条路径是一个答案,因…

基于springboot实现二次元商品购物系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现二次元商品购物系统演示 摘要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器&#xff0…

python + 蒙特卡罗 = 股市神器! 能用到A股吗?

蒙特卡罗模拟作为一种在金融领域广泛应用的强大统计技术,能够对金融资产(例如股票)的行为进行模拟建模。在本文中,我们将深入探讨如何在Python编程环境中实现蒙特卡罗模拟,以预测股票市场未来可能出现的情况。我们将利…

MySQL进阶45讲【12】为什么你的MySQL偶尔会卡一下

1 前言 平时的工作中,不知道大家有没有遇到过这样的场景,一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持…

【Linux驱动】块设备驱动(二)—— 块设备读写(使用请求队列)

块设备的操作函数并没有类似于字符驱动中的read 和write函数,要实现读写操作,只能在请求处理函数中实现。这就分为两种,是否要使用请求队列,请求队列的主要作用是管理和调度IO请求。在以下情况中,一般需要用到请求队队…

Kafka 使用手册

kafka3.0 文章目录 kafka3.01. 什么是kafka?2. kafka基础架构3. kafka集群搭建4. kafka命令行操作主题命令行【topic】生产者命令行【producer】消费者命令行【consumer】 5. kafka生产者生产者消息发送流程Producer 发送原理普通的异步发送带回调函数的异步发送同步…

虚幻5源码版打包服务端

适用情况,windows系统,已经安装vs2022之类的,和UE5适配的版本 源码版使用 1.下载源码版,推荐下载 压缩包 tar.gz那个,zip和git clone我老是下载不下载来,只是这个压缩包要解压1个多小时… 2.点击 源码的…

C语言-4

排序算法简介 /*学习内容:冒泡排序(最基本的排序方法)选择排序(冒泡的优化)插入排序(在合适的位置插入合适的数据) *//*排序分类:1.内部排序待需要进行排序的数据全部存放到内存中&…

【Python基础】案例分析:电商分析

电商分析 1 案例:某年淘宝双12部分购物数据 1.1 数据:某年淘宝双12部分购物数据; 来源:天池数据平台 1.2 分析目的: 熟悉电商常用分析指标用户行为分析用户价值模型 2 熟悉数据 2.1 导入数据 import pandas as pd fpath …

Vscode编译运行多个C++文件

1.摘要 在使用Vscode编译单个文件网上很多教程,但是对多个文件编译会发现经常出问题,通过不断的借阅网友的教程改进终于完成C运行多个文件教程如下: 2.编译运行过程 2.1 初始配置过程 (1)Vscode以及MinGW配置教程很…

EasyRecovery数据恢复软件2024最新特别绿色版下载

EasyRecovery数据恢复软件是一款功能强大的工具,最新版本通常包含更多优化和新增功能,以提升用户体验和数据恢复成功率。由于软件版本会不断更新,我无法提供特定于最新版本的详细介绍,但我可以概述EasyRecovery的一般功能以及下载…

20240206在WIN10下下载安装RX580的驱动程序

20240206在WIN10下下载安装RX580的驱动程序 2024/2/6 19:24 百度搜索:RX580 驱动 我用的是X99主板的渲染服务器,只能装WIN10的64位系统。直接下载并安装最新的驱动程序就可以了! 另:我以前的电脑插的是RX550的显卡,直接…