Pytorch常用函数用法归纳:Tensor张量之间的计算

1.torch.add()

(1)函数原型:

python 复制代码
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)函数功能:

python 复制代码
对输入张量input逐元素加上标量值/张量other,并返回一个新的张量tensor;运算过程中需要满足广播机制
output = torch.add(input,other,alpha)的效果等同于
output = input + other * alpha

2.torch.sub()

(1)函数原型:

python 复制代码
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)函数功能:

python 复制代码
对输入张量input逐元素加上标量值/张量other,并返回一个新的张量tensor;运算过程中需要满足广播机制;
output = torch.sub(input,other,alpha)的效果等同于
output = input - other * alpha

3.张量乘法

(1)函数原型:

python 复制代码
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)函数功能:

python 复制代码
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)函数原型:

python 复制代码
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)函数功能:

python 复制代码
将数组input与数组other对应位置的元素做除法,输出out张量的每个位置的元素等于input张量和other张量对应位置处的元素相除;
该运算支持广播机制,并且还支持整数、浮点数和复杂输入,始终将整数类型提升为默认标量类型;

5.张量范数

(1)函数原型:

python 复制代码
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)函数功能:

python 复制代码
求解给定的张量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.张量拼接

相关推荐
迅易科技23 分钟前
借助腾讯云质检平台的新范式,做工业制造企业质检的“AI慧眼”
人工智能·视觉检测·制造
古希腊掌管学习的神1 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI2 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长2 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
梧桐树04293 小时前
python常用内建模块:collections
python
AI_NEW_COME3 小时前
知识库管理系统可扩展性深度测评
人工智能
Dream_Snowar4 小时前
速通Python 第三节
开发语言·python
海棠AI实验室4 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself4 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
IT古董5 小时前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类