pytorch基础知识Tensor算术运算

1、Tensor的基本概念

标量是零维的张量,向量是一维的张量,矩阵是二维的张量

2、Tensor的创建

import torch"""常见的几个tensor创建"""
a = torch.Tensor([[1,2],[3,4]]) #2行2列的
print(a, a.type())  
print(torch.ones(2,3)) #2行3列全为1的
print(torch.eye(2,3))  #2行3列对角线是1,其余是0
print(torch.zeros(2,3)) #2行3列全为0
print(torch.zeros_like(a)) #2行2列全为0,与a结构一致"""生成随机的tensor"""
b = torch.rand(2,2)
print(b, b.type())
"""生成正态分布tensor"""
c = torch.normal(mean=0.0, std=torch.rand(5))
print(c, c.type())d = torch.normal(mean=torch.rand(5), std=torch.rand(5))
print(d, d.type())"""生成均匀分布的tensor"""
e = torch.Tensor(2,2).uniform_(-1,1)
print(e, e.type())"""生成序列"""
f = torch.arange(0, 10, 1)
print(f, f.type())g = torch.linspace(2, 10, 4) #拿到等间隔的4个数字
print(g, g.type())
3、Tensor的属性

torch.dtype

torch.device 代表Tensor创建之后所存储的设备

torch.layout 表示Tensor内存布局的对象(稠密、稀疏张量)

3.1 定义稀疏的张量

torch.sparse_coo_tensor  coo元素表示非零元素的坐标形式

import torchdev = torch.device('cpu')
# dev = torch.device('cuda')# i非0元素坐标,v非0元素值
i = torch.tensor([[0, 1, 2], [0, 1, 2]])
v = torch.tensor([1, 2, 3])
# 稀疏的张量
a = torch.sparse_coo_tensor(i, v, (4,4), dtype=torch.float32, device=dev)# 将稀疏的张量转化为稠密的张量
b = a.to_dense()  print(a)
print("------------------------------------------------")
print(b)#  打印结果
tensor(indices=tensor([[0, 1, 2],[0, 1, 2]]),values=tensor([1., 2., 3.]),size=(4, 4), nnz=3, layout=torch.sparse_coo)
------------------------------------------------
tensor([[1., 0., 0., 0.],[0., 2., 0., 0.],[0., 0., 3., 0.],[0., 0., 0., 0.]])
4、Tensor算术运算
4.1 加法
a + b
torch.add(a, b)
a.add(b)
a.add_(b) #会将结果赋值给a
4.2 减法
a - b
torch.sub(a, b)
a.sub(b)
a.sub_(b) #会将结果赋值给a
4.3 乘法
# 哈达玛积,对应元素相乘
a * b
torch.mul(a, b)
a.mul(b)
a.mul_(b) #会将结果赋值给a
4.4 除法
a / b
torch.div(a, b)
a.div(b)
a.div_(b) #会将结果赋值给a
4.5 矩阵运算
a = torch.ones(2,1)
b = torch.ones(1,2)
torch.mm(a, b)
torch.matmul(a, b)
a @ b
a.mm(b)
a.matmul(b)

 对于高维度的Tensor(dim>2),定义其矩阵乘法仅在最后的两个维度上,要求前面的维度必须保持一致, 运算操作只有torch.matmul()

a = torch.ones(1, 2, 3, 4)
b = torch.ones(1, 2, 4, 3)
print(a.matmul(b))
4.6 Tensor幂运算
torch.pow(a, 2)
a.pow(2)
a**2
a.pow_(2)torch.exp(a) #e的n次方
a.exp_()
4.7 Tensor开平方运算
a.sqrt()
a.sqrt_()
4.8 Tensor对数运算
torch.log(a) #底数是e
torch.log_(a)
torch.log2()
torch.log10()
4.9 pytorch in-place概念,即 “就地操作”,不允许使用临时变量,也称为原位操作

比如以下运算:

x = x + y

sub_、add_、div_、mul_等

4.10 Tensor的广播机制 张量参数可以自动扩展为相同大小

广播机制需要满足两个条件:

1、每个张量至少有一个维度

2、满足右对齐,a+b ,即

a = torch.rand(2,3)
b = torch.rand(3)
print(a+b)  #可以相加,从右向左,b的维度3,那么a的维度要么是3,要么是1a = torch.rand(2,1)
b = torch.rand(3)
print(a+b)  #可以相加a = torch.rand(2,4)
b = torch.rand(3)
print(a+b) #从右向左,b的维度3与a的维度4无法对齐,报错
4.11 Tensor的取余数、取整数
a = torch.rand(2,2)
a = a * 10
print(torch.floor(a)) #向上取整
print(torch.ceil(a)) #向下取整
print(torch.round(a)) #四舍五入
print(torch.trunc(a)) #取整数
print(torch.frac(a)) #取小数
print(a % 2) #取余数
4.12 Tensor的比较运算、排序
"""比较"""
a = torch.rand(2, 3)
b = torch.rand(2, 3)
print(torch.eq(a, b)) 
print(torch.equal(a, b)) #比较shape与元素是否都相同
print(torch.gt(a, b))
print(torch.ge(a, b))
print(torch.le(a, b))
print(torch.lt(a, b))
print(torch.ne(a, b))"""排序"""
a = torch.rand([[1,2,2,5], [2,4,1,3]])
print(torch.sort(a, dim=0, descending=True))  #对第0维排序,降序
print(torch.topk(a, k=2, dim=1)) #返回指定维度上的前k个最大值及其索引
print(torch.kthvalue(a, k=2, dim=0)) # 返回指定维度上的第K个最小值及其索引print(torch.isfinite(a)) #判断是否有界
print(torch.isfinite(a/2)) 
print(torch.isinf(a/0)) #判断是否无界
print(torch.isnan(a)) #是否None
4.13 Tensor的三角函数

4.14 Tensor的其他函数

以下公众号发布python编程技术,感兴趣的可点击关注哦!

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

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

相关文章

大数据平台需要存算分离吗?某保险集团:以 ZBS 优化资源利用率,缩短业务用时超一半

金融机构普遍采用“存算一体”架构支撑基于 Hadoop 框架的大数据平台。而随着金融业务的多元化发展,不同业务对计算和存储的需求差异较大,由于“存算一体”架构共享存储与计算资源,经常会出现资源需求不均衡、资源利用率低下、难以灵活调度等…

c++网络通信

TCP/IP协议 OSI参考模型采用分层划分原则,将网络中的数据传输划分为7层,其中,物理层居于最下层,是最基础、核心的网络硬件层;应用层居于最上层,负责应用资源的管理。每一层使用下层的服务,并向…

程序设计语言前言

1.机器语言及特点 2.编译语言及特点 3.高级语言及特点 4.编译和解释 5.IPO编程方式 一、机器语言 机器语言,也被称为二进制代码语言,是计算机硬件能够直接识别的程序语言或指令代码。它是由一系列由0和1组成的二进制指令码构成,每一条指令码…

【JavaScript脚本宇宙】轻松搞定代码调试和日志记录,你需要的都在这里!

掌握这几个JavaScript调试和日志库,让你的开发事半功倍! 前言 在软件开发过程中,调试和日志记录是必不可少的环节。本文将介绍几个常用的JavaScript调试和日志记录库,包括debug、loglevel、Winston、Bunyan、Pino和Morgan&#…

drozer中文乱码解决方法

drozer简介 drozer 是 Android 的安全测试框架。 drozer 允许您通过扮演应用的角色并与 Android 运行时、其他应用的 IPC 端点和底层操作系统进行交互来搜索应用和设备中的安全漏洞。 drozer 提供了一些工具来帮助您使用、分享和理解公共 Android 漏洞。 drozer 是开源软件…

ESP32-C2模组数据透传模式配置详细教程

文章目录 1. 背景2. 关键步骤2.1 烧录AT指令固件2.2 配置透传模式2.3 如何退出透传模式重新配置3. 思考1. 背景 最近做的项目中,有蓝牙+WIFI的数据透传的需求,即系统A和系统B之间的通讯通过无线的方式,其实在实际项目中有很多这种场景比如无线调试手柄、无线数据终端、无线…

虚拟机热迁移详解:概念、架构、原理、搭建过程、常用命令与实战案例

一、虚拟机热迁移概述 1.1 虚拟机热迁移的定义 虚拟机热迁移(Live Migration)是指在不停止虚拟机运行的情况下,将其从一台物理主机迁移到另一台物理主机的过程。这一过程对用户和应用透明,几乎不会造成服务中断。热迁移技术在数…

状态压缩动态规划(State Compression DP)算法详解

状态压缩动态规划(State Compression DP)是一种高效解决组合优化问题的技术,特别适用于那些状态空间较大且可以用二进制表示的情况。本文将详细讲解状态压缩DP的原理、常用的位运算技巧、以及具体的例题分析。 原理概述 状态压缩DP的核心思…

【D3.js in Action 3 精译】1.2 D3 生态系统——入门须知

1.2 D3 生态系统——入门须知 D3.js 从不单打独斗,而是作为 D3 生态系统的一员,与生态内的一系列技术和工具相结合来创建丰富的 Web 界面。与其他网页一样,D3 项目也是充分利用 HTML5 的强大功能在 DOM 内构建出来的。尽管 D3 也可以创建并操…

大数据面试题之MapReduce(3)

reduce任务什么时候开始? 在Hadoop MapReduce中,Reduce任务的开始时间取决于几个关键因素:1、Map任务的完成情况: Reduce任务不能在所有相关的Map任务完成之前开始处理。但是,Hadoop允许在Map任务完成一定比例后就开始 执行Redu…

ElementUI搭建

概述 Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组 件库. 安装 ElementUI npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用。 npm i element-ui -S 在控制台输入此命令来安装ElementUI 在 main.j…

Leetcode 力扣 125. 验证回文串 (抖音号:708231408)

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则&#…

MyPostMan:按照项目管理接口,基于迭代生成接口文档、执行接口自动化联合测试

MyPostMan 是一款类似 PostMan 的接口请求软件,不同于 PostMan 的是,它按照 项目(微服务)、目录来管理我们的接口,基于迭代来管理我们的接口文档,可导出或者在局域网内共享,按照迭代编写自动化测…

netmiko_ssh_华为防火墙

from netmiko import ConnectHandlerip 防火墙ip地址hw_fw {device_type: huawei,host: ip, # 使用 host 字段同时指定 IP 和端口号username: 用户名,password: 密码,port: 50022 # 直接设置 port 字段 }net_connect ConnectHandler(**hw_fw)ou net_connect.send_command…

西安国际医学中心医院 多学科联合创新白癜风治疗法取得进展

近日,西安国际医学中心医院“自体头皮毛囊裂解物混悬液移植治疗白癜风”项目,备受瞩目。据悉,在白癜风和白发的研究及治疗上,均有望取得显著进展。 卢涛主任高分通过医院新技术新业务立项 “白癜风”——是由于皮肤黑素细胞被破坏…

mybatis-plus sql拼接加括号

场景: 在代码中使用mybatis-plus进行sql的查询,条件略微复杂,需要拼接多个or的情况下,如 and...or...or... / (and...or)...or... / (and...(or...or) ) 举例1: (and...(or...or))的格式 若简单的使用lambda表达式进行wrapper的添加,最后造成的结果是…

【el-cascader 多级多选限制条数】

<el-cascaderref"cascaderJob"v-if"categoryjobOptions.length > 0"class"el_input_widht"v-model"categoryjobValue"placeholder"职位分类":options"categoryjobOptions":props"{multiple: true, che…

autoware.universe源码略读(3.3)--perception:tensorrt_yolo

autoware.universe源码略读3.3--perception&#xff1a;tensorrt_yolo 模块组成cuda_utils&#xff08;CUDA接口&#xff09;calibrator&#xff08;校准器&#xff09;ImageStreamInt8EntropyCalibrator mish&#xff08;mish激活函数&#xff0c;基于CUDA&#xff09;mish_p…

Python22 Pandas库

Pandas 是一个Python数据分析库&#xff0c;它提供了高性能、易于使用的数据结构和数据分析工具。这个库适用于处理和分析输入数据&#xff0c;常见于统计分析、金融分析、社会科学研究等领域。 1.Pandas的核心功能 Pandas 库的核心功能包括&#xff1a; 1.数据结构&#xff…

ODYSSEE加速电机仿真优化

由于对低碳社会的强烈需求&#xff0c;电动汽车(EV)和混合动力汽车(HEV)的数量正在迅速增长。新能源汽车的主要部件是电池、逆变器和电机。电机市场的规模也将不断扩大。为了提高EV的性能&#xff0c;对电机设计工程师的要求越来越高。 除了EV市场&#xff0c;协作机器人市场也…