深度学习02-pytorch-04-张量的运算函数


在 PyTorch 中,张量(tensor)运算是核心操作之一,PyTorch 提供了丰富的函数来进行张量运算,包括数学运算、线性代数、索引操作等。以下是常见的张量运算函数及其用途:
1. 基本数学运算
-
加法运算:
torch.add(a, b)或者直接使用+a = torch.tensor([1, 2]) b = torch.tensor([3, 4]) c = torch.add(a, b) # [4, 6] # 或者 c = a + b -
减法运算:
torch.sub(a, b)或者直接使用-c = torch.sub(a, b) # [-2, -2] # 或者 c = a - b -
乘法运算(逐元素):
torch.mul(a, b)或者直接使用*c = torch.mul(a, b) # [3, 8] # 或者 c = a * b -
除法运算(逐元素):
torch.div(a, b)或者直接使用/c = torch.div(a, b) # [0.3333, 0.5] # 或者 c = a / b -
指数运算:
torch.pow(a, b)或者a ** bc = torch.pow(a, b) # a^b -> [1^3, 2^4] = [1, 16] # 或者 c = a ** b -
求幂函数:
torch.sqrt(a),torch.exp(a),torch.log(a)c = torch.sqrt(torch.tensor([4.0, 9.0])) # [2.0, 3.0] d = torch.exp(torch.tensor([1.0, 2.0])) # e^1, e^2 e = torch.log(torch.tensor([1.0, 2.0])) # log(1), log(2)
2. 聚合操作
-
求和:
torch.sum(tensor, dim=None)a = torch.tensor([[1, 2], [3, 4]]) total_sum = torch.sum(a) # 全局求和: 10 row_sum = torch.sum(a, dim=1) # 对每一行求和: [3, 7] -
求平均值:
torch.mean(tensor, dim=None)avg = torch.mean(a.float()) # 平均值: 2.5 -
最大值:
torch.max(tensor)或torch.max(tensor, dim)max_val = torch.max(a) # 最大值: 4 max_val_row, idx = torch.max(a, dim=1) # 每一行的最大值: [2, 4] -
最小值:
torch.min(tensor)或torch.min(tensor, dim)min_val = torch.min(a) # 最小值: 1 -
标准差:
torch.std(tensor)std = torch.std(a.float()) # 标准差
3. 线性代数运算
-
矩阵乘法:
torch.mm(a, b)或者使用@a = torch.tensor([[1, 2], [3, 4]]) b = torch.tensor([[5, 6], [7, 8]]) c = torch.mm(a, b) # 矩阵乘法 # 或者 c = a @ b -
矩阵转置:
torch.t(tensor)或者使用.Ta_t = torch.t(a) # 转置 # 或者 a_t = a.T -
矩阵求逆:
torch.inverse(tensor)a = torch.tensor([[1.0, 2.0], [3.0, 4.0]]) a_inv = torch.inverse(a) # 求矩阵的逆 -
行列式:
torch.det(tensor)det = torch.det(a) # 计算行列式 -
特征值和特征向量:
torch.eig(tensor, eigenvectors=True)e_vals, e_vecs = torch.eig(a, eigenvectors=True) # 计算特征值和特征向量
4. 张量形状操作
-
张量重塑:
torch.reshape(tensor, new_shape)或tensor.view(new_shape)a = torch.tensor([[1, 2], [3, 4], [5, 6]]) reshaped = torch.reshape(a, (2, 3)) # 改变形状为 (2, 3) -
张量扩展:
torch.unsqueeze(tensor, dim),torch.squeeze(tensor, dim)a = torch.tensor([1, 2, 3]) unsqueezed = torch.unsqueeze(a, 0) # 在第0维添加一个新维度 -> [[1, 2, 3]] squeezed = torch.squeeze(unsqueezed) # 移除维度 -> [1, 2, 3] -
拼接张量:
torch.cat(tensors, dim)或torch.stack(tensors, dim)a = torch.tensor([1, 2]) b = torch.tensor([3, 4]) concatenated = torch.cat((a, b), dim=0) # 拼接 -> [1, 2, 3, 4]stacked = torch.stack((a, b), dim=0) # 堆叠 -> [[1, 2], [3, 4]]
5. 索引操作
-
通过索引选择元素:
tensor[index]a = torch.tensor([[1, 2], [3, 4], [5, 6]]) selected = a[0, 1] # 选择第0行第1列的元素 -> 2 -
高级索引:
tensor[range]、布尔索引等a = torch.tensor([1, 2, 3, 4, 5]) selected = a[a > 3] # 选择大于3的元素 -> [4, 5]
6. 随机数生成
-
均匀分布随机数:
torch.rand(size)random_tensor = torch.rand(3, 3) # 生成一个 3x3 的均匀分布随机张量 -
正态分布随机数:
torch.randn(size)normal_random = torch.randn(3, 3) # 生成一个 3x3 的正态分布随机张量 -
指定范围的整数随机数:
torch.randint(low, high, size)randint_tensor = torch.randint(0, 10, (3, 3)) # 生成 0 到 10 之间的随机整数
7. 广播机制
-
广播运算:当张量的形状不同,但维度兼容时,PyTorch 会自动应用广播机制扩展张量。
a = torch.tensor([1, 2, 3]) b = torch.tensor([[1], [2], [3]]) c = a + b # 广播操作
8. 自动微分
-
启用自动微分:
requires_grad=Truex = torch.tensor(2.0, requires_grad=True) y = x ** 2 y.backward() # 计算梯度 print(x.grad) # 输出: 4.0
总结
PyTorch 中的张量运算函数非常丰富,从基本的数学运算到高级的线性代数操作、形状调整和随机数生成,这些函数让张量的处理非常灵活和高效。通过这些运算,你可以实现各种数值计算和深度学习模型的训练。
相关文章:
深度学习02-pytorch-04-张量的运算函数
在 PyTorch 中,张量(tensor)运算是核心操作之一,PyTorch 提供了丰富的函数来进行张量运算,包括数学运算、线性代数、索引操作等。以下是常见的张量运算函数及其用途: 1. 基本数学运算 加法运算:…...
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【文件系统】上
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 子系统开发内核 轻量系统内核(LiteOS-M) 轻量系统内核&#…...
NISP 一级 | 8.4 《网络安全法》
关注这个证书的其他相关笔记:NISP 一级 —— 考证笔记合集-CSDN博客 2017 年 6 月 1 日,《中华人民共和国网终安全法》(以下简称《网终安全法》)正式实施。这是我国第一部全面规范网络空间安全管理方面问题的基础性法律࿰…...
实现人体模型可点击
简化需求:实现项目内嵌人体模型,实现点击不同部位弹出部位名称 一:优先3d, 方案:基于three.js,.gltf格式模型,vue3 缺点:合适且免费的3d模型找不到,因为项目对部位有要…...
C++ | Leetcode C++题解之第429题N叉树的层序遍历
题目: 题解: class Solution { public:vector<vector<int>> levelOrder(Node* root) {if (!root) {return {};}vector<vector<int>> ans;queue<Node*> q;q.push(root);while (!q.empty()) {int cnt q.size();vector<…...
Pandas简介
Pandas 是一个流行的开源数据分析库,它是基于 NumPy 构建的,为 Python 编程语言提供了高性能、易用的数据结构和数据分析工具。Pandas 主要用于数据清洗、数据转换、数据分析等任务,使得数据处理工作变得更加高效和便捷。 Pandas 的两个主要…...
Python | Leetcode Python题解之第430题扁平化多级双向链表
题目: 题解: class Solution:def flatten(self, head: "Node") -> "Node":def dfs(node: "Node") -> "Node":cur node# 记录链表的最后一个节点last Nonewhile cur:nxt cur.next# 如果有子节点&#…...
机器人机构、制造
简单整理一下,在学习了一些运动学和动力学之类的东西,简单的整合了一些常用的机械结构和图片。 1.电机: 市面上的电机有:直流电机,交流电机,舵机,步进电机,电缸,无刷电…...
《拿下奇怪的前端报错》:nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践
有些前端的小伙伴可能会好奇,nvm是什么?这里接简单介绍下,它是一个Nodejs版本管理工具。为什么需要它呢?当然是需要多个Nodejs版本的时候,那什么时候需要多个Nodejs版本?那肯定是在有点年头的公司了&#x…...
5.《DevOps》系列K8S部署CICD流水线之K8S通过Yaml部署GitLab
架构 服务器IP服务名称硬件配置192.168.1.100k8s-master8核、16G、120G192.168.1.101k8s-node18核、16G、120G192.168.1.102k8s-node28核、16G、120G192.168.1.103nfs2核、4G、500G操作系统:Rocky9.3 后续通过K8S部署Jenkins NFS的SC创建参考:2.《DevOps》系列K8S部署CICD流…...
[SAP ABAP] 创建数据库视图和维护视图
数据准备 学校表(ZDBT_SCH_437) 学生表(ZDBT_STU_437) 学校表(ZDBT_SCH_437)与学生表(ZDBT_STU_437)字段 学校表(ZDBT_SCH_437)与学生表(ZDBT_STU_437)行数据明细 1.创建数据库视图 使用SE11创建数据库视图 填写视图名称ZV_DATABASEV_437,点击创建按钮 选择数据库视…...
【最快最简单的排序 —— 桶排序算法】
最快最简单的排序 —— 桶排序算法 桶排序是一种排序算法,其工作原理是将数据分到有限数量的桶子里,然后对每个桶内的元素进行单独排序,最后依次把各个桶中的记录列出来。桶排序的效率取决于映射函数的选择和桶的数量。 桶排序适用于数据分…...
AI时代,服务器厂商能否打破薄利的命运?
文|刘俊宏 编|王一粟 AI大模型正在引发新一轮的“算力焦渴”。 近日,OpenAI刚发布的o1大模型再次刷新了大模型能力的上限。对比上一次迭代的版本,o1的推理能力全方位“吊打”了GPT-4o。更优秀的能力,来自与o1将思维…...
2024年9月python二级易错题和难题大全(附详细解析)(二)
2024年9月python二级易错题和难题大全(附详细解析)(二) 第1题第2题第3题第4题第5题第6题第7题第8题第9题第10题第11题第12题第13题第14题第15题第16题第17题第18题第19题第20题第1题 1、以下代码的输出结果是() x = 12 + 3 * ((5 * 8) - 14) // 6 print(x) A、25.0 B、6…...
4.结构型设计模式 - 第1回:引言与适配器模式 (Adapter Pattern) ——设计模式入门系列
一、引言 在现代软件开发中,设计模式是帮助我们解决复杂问题的工具,它们提供了在常见场景下重用已验证解决方案的途径。而结构型设计模式主要关注类与对象之间的组合方式,旨在通过增强灵活性和降低耦合度来改进代码的结构。 本次讨论的是结…...
解决mybatis plus 中 FastjsonTypeHandler无法正确反序列化List类型的问题
由于是根据自动映射类型,我们设置的字段类型是List 也就是反序列化的时候也只是用 FastjsonTypeHandler中的 Override protected Object parse(String json) { return JSON.parseObject(json, type); } 反序列化方法,这是type为List 反序列后我们并没…...
MacOS安装homebrew,jEnv,多版本JDK
1 安装homebrew homebrew官网 根据官网提示,运行安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装后,bash会提示执行两条命令 (echo; echo eval "$(/opt/homebrew/b…...
【HTTP】认识 URL 和 URL encode
文章目录 认识 URLURL 基本格式**带层次的文件路径****查询字符串****片段标识符** URL encode 认识 URL 计算机中非常重要的概念,并不仅仅是在 HTTP 中使用。用来描述一个网络资源所处的位置,全称“唯一资源定位符” URI 是“唯一资源标识符“严格的说…...
【AI学习笔记】初学机器学习西瓜书概要记录(二)常用的机器学习方法篇
初学机器学习西瓜书的概要记录(一)机器学习基础知识篇(已完结) 初学机器学习西瓜书的概要记录(二)常用的机器学习方法篇(持续更新) 初学机器学习西瓜书的概要记录(三)进阶知识篇(待更) 文字公式撰写不易&am…...
[SDX35+WCN6856]SDX35 + WCN6856 默认增加打包wifi配置hostapd_24g.conf和hostapd_5g.conf操作方法
SDX35 SDX35介绍 SDX35设备是一种多模调制解调器芯片,支持 4G/5G sub-6 技术。它是一个4nm芯片专为实现卓越的性能和能效而设计。它包括一个 1.9 GHz Cortex-A7 应用处理器。 SDX35主要特性 ■ 3GPP Rel. 17 with 5G Reduced Capability (RedCap) support. Backward compati…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
