PyTorch基础-Tensors属性、Tensor的运算

2024-02-03 04:04

本文主要是介绍PyTorch基础-Tensors属性、Tensor的运算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PyTorch的基本概念

Tensor的基本概念

张量高于标量、向量、矩阵
标量说零维的张量,向量是一维的张量,矩阵是二维的张量

Tensor与机器学习的关系

image.png

Tensor的创建

函数功能
Tensor(*size)基础构造函数
Tensor(data)类似np.array
ones(*size)全1Tensor
zeros(*size)全0Tensor
eye(*size)对角线为1,其他为0
arange(s,e,step)从s到e,步长为step
linspace(s,e,steps)从s到e,均匀切分成steps份
rand/randn(*size)均匀/标准分布
normal(mean,std)/uniform_(from,to)正态分布/均匀分布
randperm(m)随机排列

实例
image.png
随机数 正态分布 标准分布
image.png
序列
image.png

Tensor的属性

  • 每一个Tensor有torch.dtype、torch.device、torch.layout三种属性
  • torch.device 标识了torch.Tensor对象在创建之后所存储在的设备名称
  • torch.layout表示torch.Tensor内存布局的对象
torch.tensor([1,2,3],dtype=torch.float32,device=torch.device('cpu'))

稀疏的张量

  • torch.sparse_coo_tensor
  • coo类型表示了非零元素的坐标形式
indices = torch.tensor([0,1,1],[2,0,2]])
values = torch.tensor([3,4,5],dtype=torch.float32)
x = torch.sparse_coo_tensor(i,v,[2,4])
dev = torch.device("cpu")
torch.tensor([2,2],device=dev)
torch.tensor([2,2],dtype=torch.float32,device=dev)

image.png
稀疏的张量

i=torch.tensor([[0,1,2],[0,1,2]])
v=torch.tensor([1,2,3])
torch.sparse_coo_tensor(i,v,(4,4))

image.png
转成稠密的张量

torch.sparse_coo_tensor(i,v,(4,4)).to_dense()

image.png

Tensor的算术运算

加法运算

c=a+b
c=torch.add(a,b)
a.add(b)
a.add_(b)#会修改a的值

image.png

减法运算

c=a-b
c=torch.sub(a,b)
a.sub(b)
a.sub_(b)#会修改a的值

image.png

乘法运算

  • 哈达玛积(element wise,对应元素相乘)
c=a*b
c=torch.mul(a,b)
a.mul(b)
a.mul_(b)

image.png

除法运算

c=a/b
c=torch.div(a,b)
a.div(b)
a.div_(b)

image.png

矩阵运算

  • 二维矩阵乘法运算操作包括torch.mm()、torch.matmul()、@
a=torch.ones(2,1)
b=torch.ones(1,2)
print(torch.mm(a,b))
print(torch.matmul(a,b))
print(a@b)
print(a.matmul(b))
print(a.mm(b))

image.png

  • 对于高维的Tensor(dim>2),定义其矩阵乘法仅在最后的两个维度上,要求前面的维度必须保持一致,就像矩阵的索引一样并且运算操作只有torch.matmul()
a=torch.ones(1,2,3,4)
b=torch.ones(1,2,4,3)
print(a.matmul(b))
print(torch.matmul(a,b))

image.png

幂运算

print(torch.pow(a,2))
print(a.pow(2))
print(a**2)
print(a.pow_(2))

image.png
e的n次方

print(torch.exp(a))
b=a.exp_()

image.png

开方运算

a.sqrt()
a.sqrt_()

image.png

对数

torch.log2(a)
torch.log10(a)
torch.log(a)
torch.log_(a)

image.png

Tensor的取整/取余运算

  • .floor()向下取整数
  • .ceil()向上取整数
  • .round()四舍五入
  • .trunc()裁剪,只取整数部分
  • .frac()只取小数部分
  • %取余

image.png

Tensor的比较运算

torch.eq(input,other, out=None) #按成员进行等式操作,相同返回True
torch.equal(tensor1,tensor2) #如果tensor1和tensor2有相同的size和elements,则为true
torch.ge(input, other, out=None) #input>= other
torch.gt(input, other, out=None) #input>other
torch.le(input, other, out=None) #input=<other
torch.lt(input, other, out=None) #input<other
torch.ne(input, other, out=None) #input != other 不等于

排序

torch.sort(input, dim=None, descending=False, out=None) 
#对目标input进行排序
torch.topk(input, k,dim=None, largest=True, sorted=Trueout=None)
#沿着指定维度返回最大k个数值及其索引值
torch.kthvalue(input, k, dim=None, out=None)
#沿着指定维度返回第k个最小值及其索引值

Tensor判定是否为finite/inf/nan

torch.isfinite(tensor)/torch.isinf(tensor)/torch.isnan(tensor)
返回一个标记元素是否为 finite/inf/nan 的mask 张量

Tensor的三角函数

  • torch.abs(input, out=None)
  • torch.acos(input, out=None)
  • torch.asin(input, out=None)
  • torch.atan(input, out=None)
  • torch.atan2(input, inpu2out=None)
  • torch.cos(input, out=None)
  • torch.cosh(input, out=None)
  • torch.sin(input, out=None)
  • torch.sinh(input, out=None)
  • torch.tan(input, out=None)
  • torch.tanh(input, out=None)

这篇关于PyTorch基础-Tensors属性、Tensor的运算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

PyTorch使用教程之Tensor包详解

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

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

uva 575 Skew Binary(位运算)

求第一个以(2^(k+1)-1)为进制的数。 数据不大,可以直接搞。 代码: #include <stdio.h>#include <string.h>const int maxn = 100 + 5;int main(){char num[maxn];while (scanf("%s", num) == 1){if (num[0] == '0')break;int len =