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)函数功能:
https://www.cnblogs.com/wanghui-garcia/p/11266298.html
求解给定的张量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.张量拼接
(1)函数原型:
1.torch.concat(inputs,dim,out)
2.torch.stack(inputs,dim,out)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
inputs | sequence of torch.Tensor | 需要进行拼接的张量序列,可以是由任意相同类型的张量组成的python序列(list、tuple);这些张量的各个维度必须相同(除了进行拼接的维度,即参数dim)或者是空张量 |
dim | int;Optional | 用于指定拼接张量的维度,默认值为0;dim的取值范围在[0,len(inputs[0])] |
out | torch.Tensor;Optional | 用于存储输出结果的张量。如果提供了该参数,结果将存储在这个张量中;默认值为None |
(3)函数功能: torch.stack()实例可参考:PyTorch基础(18)-- torch.stack()方法-CSDN博客
1.将给定的张量序列inputs按照指定的维度dim进行拼接,得到一个新的张量
其中新张量的形状中拼接维度为序列inputs中的张量个数;其他维度和序列inputs中的张量相同
2.沿着一个新维度dim对输入张量序列inputs进行连接,输入张量序列inputs中所有的张量都应该为相同形状
返回结果张量会新增一个维度dim,该维度大小为参与拼接张量序列中的张量个数;其余维度和输入张量序列inputs中的每个张量相同;
torch.stack()和torch.cat()的区别在于前者的输出张量相比输入的张量序列中的每个张量会增加一个维度;
而后者的输出张量维度与输入张量序列中的每个张量相同
7.张量平均值
(1)函数原型:
torch.mean(input,dim,keepdim,dtype,out)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
input | torch.Tensor | 需要求解平均值的输入张量Tensor |
dim | int or tuple of ints | 需要求解平均值的张量维度;可以是一个整数或是一个由整数组成的元组; |
keepdim | boolean;Optional | 输出张量是否需要和输入张量input保持相同的维度; False(默认值):输出张量不保持参数dim所指定的维度,此时输出张量相比input来说减少了dim参数所确定的对应维度 True:输出张量保持参数dim所指定的维度,此时输出张量和input维度相同 |
dtype | torch.dtype;Optional | 指定输出结果张量的数据类型,默认值为None,表示使用Pytorch默认的数据类型 |
out | torch.Tensor;Optional | 用于存储输出结果的张量。如果提供了该参数,结果将存储在这个张量中;默认值为Non |
(3)函数功能:具体实例可参考【pytorch】torch.mean()-CSDN博客
维度的顺序是:(batch,channel,height(纵向),width(横向) )
求解给定的张量Tensor在指定的维度dim上的平均值
返回值为对应的平均值张量
可以根据参数dim判断计算结果的维度,dim默认从0开始;dim等于几就表示去掉第几个维度;
8.张量升降维
(1)函数原型:
1.torch.squeeze(input, dim)
2.torch.unsqueeze(input,dim)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
input | torch.Tensor | 需要进行升维/降维的输入张量Tensor |
dim | torch.squeeze():int or tuple of ints;optional torch.unsqueeze():int | torch.squeeze():指定进行降维的维度如果给定dim并且张量input在该dim的大小为1,则去掉该维度;如果给定dim并且张量input在该dim的大小不为1,则保持不变;如果没有给定dim则默认去除input中大小为1的维度; torch.unsqueeze():给input进行升维的指定维度dim的取值范围是[-input.dim()-1, input.dim()+1),当dim取值为负数时dim=dim+input.dim()+1 |
(3)函数功能:
1.去除输入张量input给定大小为1的维度;
2.在输入张量input插入指定的维度并将其大小设置为1;
9.张量改变形状
(1)函数原型:
1.torch.reshape(input, shape)
2.torch.Tensor.view(*shape)
3.torch.flatten(input, start_dim, end_dim)
(2)参数说明:
参数名称 | 参数类型 | 参数说明 |
input | torch.Tensor | 需要进行改变形状的输入张量Tensor |
shape | tuple of int | 需要输入张量Tensor改变的形状 |
start_dim | int | 需要进行flatten操作的起始的那个维度,默认值为0表示从第一个维度开始 |
end_dim | int | 需要进行flatten操作的最后的那个维度,默认值为-1表示flatten操作到最后一个维度为止 |
(3)函数功能:
torch.flatten()操作的实例参见:torch.flatten()函数-CSDN博客
1.返回一个张量,内容和输入的张量input相同,但是具有不同形状;
输入张量input的维度不会发生变化,返回的是一个新的张量;
参数shape元组中可以只有一个值是-1,此时该维度的大小根据输入张量input全部元素的个数和其他维度的大小推断出来;
2.改变调用该方法的张量的形状,改变后的张量和原有的张量的内容相同,但是具有不同的形状;
调用该方法张量的维度会发生变化,是一种in-place的操作方法;
参数shape元组中可以只有一个值是-1,此时该维度的大小根据调用该方法张量的全部元素的个数和其他维度的大小推断出来;
3.将指定的输入张量从第start_dim维度开始到end_dim维度为止(两个都包括)的这些维度合并成一个维度;
类似摊平操作;其中新生成的维度大小为这些维度大小的乘积;没有操作的维度大小不会发生变化;
返回值是一个新的张量