Pytorch常用函数用法归纳:Tensor张量之间的计算
1.torch.add()
(1)函数原型:
torch.add(input, other, alpha, out)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
input | torch.Tensor | 表示参与运算的第一个输入Tensor张量 |
other | torch.Tensor或者Number | 表示参与运算的第二个输入Tensor张量或标量 |
alpha | Number, optional | 一个可选的缩放因子,默认为1,other张量将会乘以这个因子后再进行加法运算 |
out | torch.Tensor, optional | 用于存储输出结果的张量。如果提供了该参数,结果将存储在这个张量中;默认值为None |
(3)函数功能:
对输入张量input逐元素加上标量值/张量other,并返回一个新的张量tensor;运算过程中需要满足广播机制
output = torch.add(input,other,alpha)的效果等同于
output = input + other * alpha
2.torch.sub()
(1)函数原型:
torch.sub(input, other, alpha, out)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
input | torch.Tensor | 表示参与运算的第一个输入Tensor张量 |
other | torch.Tensor或者Number | 表示参与运算的第二个输入Tensor张量或标量 |
alpha | Number, optional | 一个可选的缩放因子,默认为1,other张量将会乘以这个因子后再进行加法运算 |
out | torch.Tensor, optional | 用于存储输出结果的张量。如果提供了该参数,结果将存储在这个张量中;默认值为None |
(3)函数功能:
对输入张量input逐元素加上标量值/张量other,并返回一个新的张量tensor;运算过程中需要满足广播机制;
output = torch.sub(input,other,alpha)的效果等同于
output = input - other * alpha
3.张量乘法
(1)函数原型:
1.torch.mul(input,other,out)
2.torch.dot(input,other,out)
3.torch.mm(input, mat2, out)
4.torch.mv(input, vector, out)
5.torch.bmm(input, mat2, out)
6.torch.matmul(input,other,out)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
input | torch.Tensor | 表示参与运算的第一个输入Tensor张量; 对于torch.dot来说input必须是一维张量; |
other | torch.Tensor或者Number | 表示参与运算的第二个输入Tensor张量或标量; 对于torch.mul来说other是可以和input广播的张量或标量; 对于torch.dot来说other必须是一维张量; 对于torch.matmul来说other必须和input满足矩阵相乘的条件,但是torch.matmul支持广播 |
vector | torch.Tensor | 参与运算的向量,如果input为n*m的Tensor,那么vector必须是一个一维长度为m的Tensor,即vector.shape = (m,1) |
mat2 | torch.Tensor | 参与运算的第二个输入Tensor; 对于torch.mm来说,如果input为m*n的一个Tensor,那么mat2是n*p的一个Tensor,并且不支持广播; 对于torch.bmm来说,如果input为一个b*m*n的Tensor,那么mat2必须是一个b*n*p的Tensor,该函数同样不支持广播 |
out | torch.Tensor, optional | 用于存储输出结果的张量。如果提供了该参数,结果将存储在这个张量中;默认值为None |
(3)函数功能:
1.逐个对input和other中对应的元素相乘,输出out张量的每个位置的元素等于input张量和other张量对应位置处的元素相乘;该函数支持广播操作;
2.返回两个一维Tensor点积的结果;要求输入的两个一维向量的长度相同;结果等于这两个一维向量每个位置出的元素相乘之和;
3.返回两个二维Tensor矩阵相乘的结果;该函数只能用于二维Tensor之间的运算;要求mat2的第一个维度必须和input的第二个维度相同;不支持广播的操作;
4.返回一个矩阵和一个向量的矩阵乘法结果;如果input是一个m*n的Tensor,那么vector必须是一个n*1的一维向量;返回结果是一个m*1的一维向量;不支持广播的操作;
5.返回两个三维矩阵的矩阵乘法结果;input和mat2必须都是三维矩阵;如果input的维度为b*m*n,那么mat2的维度为b*n*p,结果返回是一个维度为b*m*p的三维矩阵;不支持广播的操作;
6.可以用于PyTorch中绝大多数的乘法;在不同的情形下它与上述各个乘法函数起着相同的作用:
(1)如果两个张量都是一维的,此时返回两个向量的点积;作用与torch.dot()相同,同样要求两个一维张量的元素个数相同;
(2)如果两个参数都是二维张量,那么将返回矩阵乘积;作用与torch.mm()相同,同样要求两个张量的形状需要满足矩阵乘法的条件;
(3)如果第一个参数是一维张量,第二个参数是二维张量,那么在一维张量的前面增加一个维度,然后进行矩阵乘法,矩阵乘法结束后移除添加的维度;
(4)如果第一个参数是二维张量,第二个参数是一维张量,那么将返回矩阵×向量的积;作用与torch.mv()相同,另外要求矩阵的形状和向量的形状满足矩阵乘法的要求;
(5)如果两个参数均至少为一维且其中一个参数的维度数目大于2,那么经过如下的一番处理然后进行批量矩阵乘法:
a.如果第一个参数是一维张量那么在此张量之前增加一个维度;
b.如果第二个参数是一维张量那么在此张量之后增加一个维度;
c.由于上述两个规则,所有涉及到一维张量和高维张量的乘法都被转变为二维及二维以上的张量×二维及二维以上的张量,然后除掉最右边的两个维度,对剩下的维度进行广播;最后就可以进行批量矩阵乘法;
4.张量除法
(1)函数原型:
torch.div(input,other,rounding_mode,out)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
input | torch.Tensor | 表示参与运算的第一个输入Tensor张量,即参与除法运算的被除数 |
other | torch.Tensor或者Number | 表示参与运算的第二个输入Tensor张量或标量,即参与除法运算的除数;支持广播操作; |
rounding_mode | String,Optional | 表示采用的四舍五入的模式,可选取值和对应的含义如下: None(默认值):不执行舍入操作; trunc:将除法结果向零四舍五入,相当于C语言风格的除法; floor:将除法结果向下取整 |
out | torch.Tensor,Optional | 用于存储输出结果的张量。如果提供了该参数,结果将存储在这个张量中;默认值为None |
(3)函数功能:
将数组input与数组other对应位置的元素做除法,输出out张量的每个位置的元素等于input张量和other张量对应位置处的元素相除;
该运算支持广播机制,并且还支持整数、浮点数和复杂输入,始终将整数类型提升为默认标量类型;
5.张量范数
(1)函数原型:
torch.norm(input,p,dim,keepdim,out,dtype)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
input | torch.Tensor | 求解范数的输入Tensor张量,必须是浮点类型或复数类型 |
p | Number或String;Optional | 求解范数的类型,可取值及对应的范数如下: ‘fro’(默认值):求解Frobenius范数,即各项元素的绝对值平方的总和的平方根 ‘nuc’(不常用):求解核范数,核范数是矩阵奇异值的和; Number(常用):求解对应的p-范数,即各项元素的p次方的总和的p次方根; |
dim | int,tuple of 2 ints,list of 2 ints;Optional | 指定求解范数的维度,可取值和对应的含义如下: None(默认值):在所有维度上进行计算;当input只有两维时计算矩阵范数;当输入只有一维时则计算向量范数; int:在给定的单个维度上进行计算向量范数;如果输入超过2维向量范数将被应用在最后一维; tuple of 2 ints/list of 2 ints:在给定的多个维度上计算矩阵范数; 如果参数p指定的范数类型不支持给定的维度dim,那么会报错 |
keepdim | boolean;Optional | 输出的范数张量是否保持参数dim所指定的维度: False(默认值):输出的范数张量不保持参数dim所指定的维度 True:输出的范数张量保持参数dim所指定的维度 |
out | torch.Tensor;Optional | 用于存储输出结果的张量。如果提供了该参数,结果将存储在这个张量中;默认值为None |
dtype | torch.dtype;Optional | 指定输出结果张量的数据类型,默认值为None |
(3)函数功能:
求解给定的张量Tensor在指定的维度dim上的某个范数类型
返回值为对应的范数张量
可以根据参数dim判断计算结果的维度,dim默认从0开始;dim等于几就表示去掉第几个维度;
例如原始的张量t1维度为(3,4,3),那么如下的操作得到的tensor维度为:
torch.norm(t1,dim=0):(4,3)
torch.norm(t1,dim=1):(3,3)
torch.norm(t1,dim=2):(3,4)
6.张量拼接
相关文章:
Pytorch常用函数用法归纳:Tensor张量之间的计算
1.torch.add() (1)函数原型: torch.add(input, other, alpha, out) (2)参数说明: 参数名称参数类型参数说明inputtorch.Tensor表示参与运算的第一个输入Tensor张量othertorch.Tensor或者Number表示参与运算的第二个输入Tensor张量或标量alphaNumber, optional一个可选的缩放…...

小公司要求真高
大家好,我是白露啊。 最近看到一个爽文帖,标题就是——“小公司要求真高”。 事情是这样的,一家的小公司在拿到简历之后,HR直接对楼主说:“你不合适,简历不行。” 言外之意就是嫌弃简历单薄,看…...

进阶篇02——索引
概述 结构 B树索引 在这里推荐一个可以将个各种数据结构可视化的网站:数据结构可视化 哈希索引 相关的一个面试题 分类 聚集索引和二级索引(非聚集索引) 思考题:索引思考题 创建索引语法 如果一个索引关联多个字段ÿ…...

三:SpringBoot的helloworld和使用Springboot的优点以及快速创建Springboot应用
三:SpringBoot的helloworld和使用Springboot的优点以及快速创建Springboot应用 一:HelloWorld [我们创建的是maven项目或者直接创建一个Spring] 1.1:创建一个maven 项目(1】:需要自己手动写一个SpringBoot 的启动类同…...

网络仿真方法综述
目录 1. 引言 2.仿真器介绍 2.1 NS-2 2.2 NS-3 2.3 OPNET 2.4 GNS3 3.仿真对比 4.结论 参考文献 1. 引言 网络仿真是指使用计算机模拟网络系统的行为和性能的过程。在网络仿真中,可以建立一个虚拟的网络环境,并通过模拟各种网络设备、协议和应用程…...
Android-Q升级-Camera记录
目录 代码环境 建立Android Q使用的camera仓 Camera底层适配 camx 原生接口变化 其他编译问题 chi-cdk 数据类型不匹配 case未加break的报错 libalRnBRT_GL_GBWRAPPER链接问题 vidhance编译错误 libarcsat链接问题 vendor/qcom/proprietary prebuilt_HY11 调试cam…...

Android studio如何导入项目
打开解压好的安装包 找到build.gradle文件 打开查看gradle版本 下载对应的gradle版本Index of /gradle/(镜像网站) 下载all的对应压缩包 配置gradle的环境变量 新建GRADLE_HOME 将GRADLE_HOME加入到path中 将项目在Android studio中打开进行配置 将gr…...

PHP实现一个简单的接口签名方法以及思路分析
文章目录 签名生成说明签名生成示例代码签名校验示例代码 签名生成说明 B项目需要调用A项目的接口,由A项目为B项目分配 AccessKey 和 SecretKey,用于接口加密,确保不易被穷举,生成算法不易被猜测。 最终需要确保包含签名的参数只…...

StartAI”梦想合伙人 ”招募计划
我们正火热招募AI设计师产品合伙人!如果你对AI技术充满好奇,对设计有着独特的见解和热情,亦或者你想在日常的设计工作中提高效率,无论你是电商设计师、UI设计师、建筑师、插画师等其他各类设计领域的人才。那么这就是你不容错过的…...
记录:podman安装redis
Linux系统上安装redis: podman pull redis # 拉取最新的redis版本 podman images # 查看所有本地的镜像,包括刚拉取的redis镜像mkdir -p /etc/redis/conf /etc/redis/data # 创建2个目录文件,保存redis的数据和配置文件 tou…...
TrinityCore启动报错: MySQL library version (8.0.37 id 80037) does not match
TrinityCore启动的时候报错: TrinityCore/src/server/database/Database/DatabaseWorkerPool.cpp:73 in DatabaseWorkerPool FATAL ERROR: Used MySQL library version (8.0.37 id 80037) does not match the version id used to compile TrinityCore (id 80036). S…...
代码随想三刷字符串篇
代码随想三刷字符串篇 344. 反转字符串题目代码541. 反转字符串 II题目代码54. 替换数字(第八期模拟笔试)题目代码151. 反转字符串中的单词题目代码55. 右旋字符串(第八期模拟笔试题目代码28. 实现 strStr()题目代码459.重复的子字符串题目代码344. 反转字符串 题目 链接 …...

华为支持手指关节手势的原理
华为的指关节手势有指关节截屏、指关节录屏、指关节区域截屏、指关节分屏等。该技术的实现是靠触控结合了其他一些传感器实现的。 华为的专利: 一种手势控制方法、装置、终端设备和存储介质——华为技术有限公司 专利中提到以往终端设备对于手势的识别都是基于位置和…...

Flink的简单学习五
一 动态表与连续查询 1.1 动态表 1.是flink的支持流数据Table API 和SQL的核心概念。动态表随时间的变化而变化 2.在流上面定义的表在内部是没有数据的 1.2 连续查询 1.永远不会停止,结果是一张动态表 二 Flink SQL 2.1 sql行 1.先启动启动flink集群 yarn-see…...

C++|哈希应用->位图
目录 一、概念 1.1原理分析: 1.2效率分析: 二、模拟实现 2.1位图框架初始化空间 2.2映射 2.3清零 2.4判断 2.5测试代码 三、位图扩展应用 一、概念 位图,本质上也是一个数组,通过哈希思想构造的一种数据结构,…...

Rust 实战丨SSE(Server-Sent Events)
📌 SSE(Server-Sent Events)是一种允许服务器向客户端浏览器推送信息的技术。它是 HTML5 的一部分,专门用于建立一个单向的从服务器到客户端的通信连接。SSE的使用场景非常广泛,包括实时消息推送、实时通知更新等。 S…...

Django API开发实战:前后端分离、Restful风格与DRF序列化器详解
系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django ORM深度游ÿ…...

React基础教程:TodoList案例
todoList案例——增加 定义状态 // 定义状态state {list: ["kevin", "book", "paul"]}利用ul遍历list数组 <ul>{this.state.list.map(item ><li style{{fontWeight: "bold", fontSize: "20px"}} key{item.i…...

PHP超详细安装及应用
目录 所需安装包如下 一、PHP安装 依赖包安装 安装扩展工具(先将PHP所需的软件包全部拖进centos根目录下) 安装libmcrypt 安装mhash 安装mcrypt 安装PHP 二、设置LAMP组件环境(要保证mysql、http都安装完成了) Php.ini的建…...
【算法篇】大数加法JavaScript版
题目描述 以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。 数据范围:s.length,t.length≤100000,字符串仅由’0’~‘9’构成 要求:时间复杂度 𝑂(𝑛) 示例1 输入&…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

生信服务器 | 做生信为什么推荐使用Linux服务器?
原文链接:生信服务器 | 做生信为什么推荐使用Linux服务器? 一、 做生信为什么推荐使用服务器? 大家好,我是小杜。在做生信分析的同学,或是将接触学习生信分析的同学,<font style"color:rgb(53, 1…...

论文笔记:Large Language Models for Next Point-of-Interest Recommendation
SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解 ——>使用…...