1.torch.add()

(1)函数原型:

torch.add(input, other, alpha, out)

(2)参数说明:

参数名称参数类型参数说明
inputtorch.Tensor表示参与运算的第一个输入Tensor张量
othertorch.Tensor或者Number表示参与运算的第二个输入Tensor张量或标量
alphaNumber, optional一个可选的缩放因子,默认为1,other张量将会乘以这个因子后再进行加法运算
outtorch.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)参数说明:

参数名称参数类型参数说明
inputtorch.Tensor表示参与运算的第一个输入Tensor张量
othertorch.Tensor或者Number表示参与运算的第二个输入Tensor张量或标量
alphaNumber, optional一个可选的缩放因子,默认为1,other张量将会乘以这个因子后再进行加法运算
outtorch.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)参数说明: 

参数名称参数类型参数说明
inputtorch.Tensor表示参与运算的第一个输入Tensor张量;对于torch.dot来说input必须是一维张量;
othertorch.Tensor或者Number表示参与运算的第二个输入Tensor张量或标量;对于torch.mul来说other是可以和input广播的张量或标量;对于torch.dot来说other必须是一维张量;对于torch.matmul来说other必须和input满足矩阵相乘的条件,但是torch.matmul支持广播
vectortorch.Tensor参与运算的向量,如果input为n*m的Tensor,那么vector必须是一个一维长度为m的Tensor,即vector.shape = (m,1)
mat2torch.Tensor参与运算的第二个输入Tensor;对于torch.mm来说,如果input为m*n的一个Tensor,那么mat2必须是n*p的一个Tensor,并且不支持广播;对于torch.bmm来说,如果input为一个b*m*n的Tensor,那么mat2必须是一个b*n*p的Tensor;该函数同样不支持广播
outtorch.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.由于上述两个规则,所有涉及到一维张量和高维张量的乘法都被转变为二维及二维以上的张量×二维及二维以上的张量,然后除掉最右边的两个维度,对剩下的维度进行广播;最后就可以进行批量矩阵乘法;
本站无任何商业行为
个人在线分享 » Pytorch常用函数用法归纳:Tensor张量之间的计算
E-->