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

相关推荐
weixin_437497775 小时前
读书笔记:Context Engineering 2.0 (上)
人工智能·nlp
cnxy1885 小时前
围棋对弈Python程序开发完整指南:步骤1 - 棋盘基础框架搭建
开发语言·python
喝拿铁写前端5 小时前
前端开发者使用 AI 的能力层级——从表面使用到工程化能力的真正分水岭
前端·人工智能·程序员
goodfat5 小时前
Win11如何关闭自动更新 Win11暂停系统更新的设置方法【教程】
人工智能·禁止windows更新·win11优化工具
北京领雁科技6 小时前
领雁科技反洗钱案例白皮书暨人工智能在反洗钱系统中的深度应用
人工智能·科技·安全
落叶,听雪6 小时前
河南建站系统哪个好
大数据·人工智能·python
清月电子6 小时前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
Dev7z6 小时前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
七月shi人6 小时前
AI浪潮下,前端路在何方
前端·人工智能·ai编程
橙汁味的风6 小时前
1隐马尔科夫模型HMM与条件随机场CRF
人工智能·深度学习·机器学习