PyTorch的10个基本张量操作

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.mzph.cn/news/671646.shtml

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

相关文章

记录关于 LLVM C/C++ 适用 libc++ 的一些注意事项

可以看看这个&#xff1a; https://releases.llvm.org/12.0.1/projects/libcxx/docs/UsingLibcxx.html 1、std::function<void()> 在 libc 之中不是线程安全的&#xff0c;在GCC/VC上面可以多线程上操作&#xff0c;在LLVM提供的LIBC标准库之中不行&#xff0c;要牢记&a…

DevExpress WinForms中文教程 - 如何创建可访问的WinForms应用?(二)

为用户创建易访问的Windows Forms应用程序不仅是最佳实践的体现&#xff0c;还是对包容性和以用户为中心的设计承诺。在应用程序开发生命周期的早期考虑与可访问性相关的需求可以节省长期运行的时间(因为它将决定设计决策和代码实现)。 一个可访问的WinForms应用程序提供了各种…

UC++常用语句示例

Actor操作 移动 FVector CurrentLocation GetActorLocation(); // 在X轴上增加移动 CurrentLocation.X MoveSpeed * DeltaTime; // 应用新的位置 SetActorLocation(CurrentLocation); AddActorLocalOffset(FVector(MoveSpeed * DeltaTime, 0.0f, 0.0f)); // 获取当前相对位…

mysql清空表数据后如何让自增ID仍从1开始

有2种方法&#xff1a; 1、清空表时使用truncate命令&#xff0c;而不用delete命令 truncate test; 使用truncate命令的好处&#xff1a; 1&#xff09;、速度快 2&#xff09;、可以对自增ID进行重排&#xff0c;使自增ID仍从1开始计算 2、清空表数据后&#xff0c;使用alter…

Android 11 访问 Android/data/或者getExternalCacheDir() root方式

前言&#xff1a; 需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。 getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/ 获取访问权限 如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码 android:requestLegacyExt…

20240202在Ubuntu20.04.6下使用whisper.cpp的显卡模式

20240202在Ubuntu20.04.6下使用whisper.cpp的显卡模式 2024/2/2 19:43 【结论&#xff1a;在Ubuntu20.04.6下&#xff0c;确认large模式识别7分钟中文视频&#xff0c;需要356447.78 ms&#xff0c;也就是356.5秒&#xff0c;需要大概5分钟&#xff01;效率太差&#xff01;】 …

CleanMyMac2024如何识别并清理垃圾文件?

CleanMyMac识别并清理垃圾文件的过程主要依赖于其强大的扫描功能和智能算法。以下是具体的步骤&#xff1a; 扫描垃圾文件&#xff1a;首先&#xff0c;用户需要打开CleanMyMac软件&#xff0c;并点击“智能扫描”功能。然后&#xff0c;软件将开始自动扫描Mac系统上的各种垃圾…

微信小程序(基本操作)

概念&#xff1a; 小程序&#xff1a;就是小程序&#xff0c;mini program。现在市面上有微信小程序&#xff0c;百度智能小程序等等。 微信小程序&#xff0c;简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了…

课时16:本地变量_普通变量

2.2.2 普通变量 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 变量分类 所谓的本地变量就是&#xff1a;在当前系统的某个环境下才能生效的变量&#xff0c;作用范围小。本地变量按照变量值的生成方式包含两种&#xff1a;普通…

5-4、S加减单片机程序【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍实现步进电机S曲线运动的代码 一、目标功能 实现步进电机转动总角度720&#xff0c;其中加减速各90 加速段&#xff1a;加速类型&#xff1a;S曲线  加速角度&#xff1a;角度为90  起步速度…

CSS太极动态图

CSS太极动态图 1. 案例效果 我们今天学习用HTML和CSS实现动态的太极&#xff0c;看一下效果。 2. 分析思路 太极图是由两个旋转的圆组成&#xff0c;一个是黑圆&#xff0c;一个是白圆。实现现原理是使用CSS的动画和渐变背景属性。 首先&#xff0c;为所有元素设置默认值为0…

Topaz Photo AI for Mac v2.3.1 补丁版人工智能降噪软件无损放大

想要将模糊的图片变得更加清晰&#xff1f;不妨试试Topaz Photo AI for Mac 这款人工智能、无损放大软件。Topaz Photo AI for Mac 一款强大的人工智能降噪软件&#xff0c;允许用户使用复杂的锐化算法来提高图像清晰度&#xff0c;还包括肖像编辑选项&#xff0c;如面部重塑、…

Visual Studio 2010+C#实现信源和信息熵

1. 设计要求 以图形界面的方式设计一套程序&#xff0c;该程序可以实现以下功能&#xff1a; 从输入框输入单个或多个概率&#xff0c;然后使用者可以通过相关按钮的点击求解相应的对数&#xff0c;自信息以及信息熵程序要能够实现马尔可夫信源转移概率矩阵的输入并且可以计算…

Python系列(10)—— 逻辑运算符

在Python中&#xff0c;逻辑运算符被用于连接布尔表达式&#xff0c;从而根据这些表达式的真假值来执行相应的操作。Python提供了三种基本的逻辑运算符&#xff1a;and&#xff08;与&#xff09;、or&#xff08;或&#xff09;和not&#xff08;非&#xff09;。 1. and 运算…

几千年的人类很难弄清楚一百多亿年宇宙的秘密

人类探索宇宙的历程充满了挑战和困难。宇宙之广阔、之复杂远超人类直观理解的范畴。从地球上抬头仰望星空到现代天文学和物理学的深入研究&#xff0c;人类对宇宙的认识经历了漫长且艰难的过程。以下是几个方面来说明为什么人类很难弄清楚宇宙的秘密&#xff1a; 1、宇宙的规模…

Netty源码系列 之 EventLoop run()方法 源码

EventLoop[实现类为NioEventLoop&#xff0c;我们研究NioEventLoop即可] EventLoop是一个单线程的线程池 核心作用&#xff1a;处理执行IO操作&#xff08;accept&#xff0c;read&#xff0c;write事件&#xff09;&#xff0c;普通任务&#xff0c;定时任务 EventLoop封装…

将因子转换为数字

在 R 中使用 as.numeric 函数将因子转换为数字 as 函数通常用于将数据类型显式转换为另一种类型。转换过程在 R 术语中称为强制转换&#xff0c;它表示其他编程语言中存在的强制转换概念。当我们调用函数 as.logical 时&#xff0c;它会尝试将传递的参数强制转换为逻辑类型。类…

精酿啤酒:发酵过程中的温度控制与效果

在啤酒酿造过程中&#xff0c;发酵温度的控制重要&#xff0c;它不仅影响酵母菌的活性&#xff0c;还决定了啤酒的口感、香气和风味。对于Fendi Club啤酒来说&#xff0c;切确控制发酵温度是确保啤酒品质和口感的关键环节。 在Fendi Club啤酒的发酵过程中&#xff0c;温度控制尤…

c#cad 创建-正方形(四)

运行环境 vs2022 c# cad2016 调试成功 一、程序说明 创建一个正方形&#xff0c;并将其添加到当前活动文档的模型空间中。 程序首先获取当前活动文档和数据库&#xff0c;并创建一个编辑器对象。 然后&#xff0c;使用事务开始创建正方形的操作。获取模型空间的块表记录&a…

Vue3大事件项目(ing)

文章目录 核心内容1.大事件项目介绍2.大事件项目创建3.Eslint配置代码风格4.配置代码检查工作流问题: pnpm lint是全量检查,耗时问题,历史问题 5.目录调整6.vue-router4 路由代码解析7.引入 Element Plus 组件库8.Pinia 构建仓库 和 持久化9.Pinia 仓库统一管理 核心内容 Vue3…