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.张量拼接

相关推荐
ZOMI酱5 分钟前
【AI系统】GPU 架构与 CUDA 关系
人工智能·架构
豌豆花下猫6 分钟前
Python 潮流周刊#78:async/await 是糟糕的设计(摘要)
后端·python·ai
只因在人海中多看了你一眼9 分钟前
python语言基础
开发语言·python
deephub11 分钟前
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
人工智能·pytorch·深度学习·图嵌入
小技与小术16 分钟前
数据结构之树与二叉树
开发语言·数据结构·python
hummhumm43 分钟前
第 25 章 - Golang 项目结构
java·开发语言·前端·后端·python·elasticsearch·golang
deephub44 分钟前
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
人工智能·深度学习·transformer·大语言模型·注意力机制
杜小满1 小时前
周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程
python·随机森林·pycharm·集成学习
搏博1 小时前
神经网络问题之二:梯度爆炸(Gradient Explosion)
人工智能·深度学习·神经网络
KGback1 小时前
【论文解析】HAQ: Hardware-Aware Automated Quantization With Mixed Precision
人工智能