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

相关文章

Java利用Spire.XLS for Java自动化设置Excel的文档属性

《Java利用Spire.XLSforJava自动化设置Excel的文档属性》一个专业的Excel文件,其文档属性往往能大大提升文件的可管理性和可检索性,下面我们就来看看Java如何使用Spire... 目录Spire.XLS for Java 库介绍与安装Java 设置内置的 Excel 文档属性Java

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

input的accept属性让文件上传安全高效

《input的accept属性让文件上传安全高效》文章介绍了HTML的input文件上传`accept`属性在文件上传校验中的重要性和优势,通过使用`accept`属性,可以减少前端JavaScrip... 目录前言那个悄悄毁掉你上传体验的“常见写法”改变一切的 html 小特性:accept真正的魔法:让

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

JavaScript装饰器从基础到实战教程

《JavaScript装饰器从基础到实战教程》装饰器是js中一种声明式语法特性,用于在不修改原始代码的情况下,动态扩展类、方法、属性或参数的行为,本文将从基础概念入手,逐步讲解装饰器的类型、用法、进阶... 目录一、装饰器基础概念1.1 什么是装饰器?1.2 装饰器的语法1.3 装饰器的执行时机二、装饰器的

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的