原文地址:https://zhuanlan.zhihu.com/p/31494491
上次我总结了在PyTorch中建立随机数Tensor的多种方法的区别。
这次我把常用的Tensor的数学运算总结到这里,以防自己在使用PyTorch做实验时,忘记这些方法应该传什么参数。
总结的方法包括:
Tensor求和以及按索引求和:torch.sum() torch.Tensor.indexadd()
Tensor元素乘积:torch.prod(input)
对Tensor求均值、方差、极值:
torch.mean() torch.var()
torch.max() torch.min()
最后还有在NLP领域经常用到的:
求Tensor的平方根倒数、线性插值、双曲正切
torch.rsqrt(input) torch.lerp(star,end,weight)
torch.tanh(input, out=None)
张量数学运算
元素求和
torch.sum(input) → float
返回输入向量input中所有元素的和。
参数:
- input (Tensor) - 输入张量
例子:
torch.sum(input, dim, keepdim=False, out=None) → Tensor
返回新的张量,其中包括输入张量input中指定维度dim中每行的和。
若keepdim值为True,则在输出张量中,除了被操作的dim维度值降为1,其它维度与输入张量input相同。否则,dim维度相当于被执行torch.squeeze()维度压缩操作,导致此维度消失,最终输出张量会比输入张量少一个维度。
参数:
- input (Tensor) - 输入Tensor
- dim (int) - 指定维度
- keepdim (bool) - 输出张量是否保持与输入张量有相同数量的维度
- out (Tensor,optional) - 结果张量
例子:
元素乘积
torch.prod(input) → float
返回输入张量input所有元素的乘积。
参数:
- input (Tensor) - 输入张量
例子:
torch.prod(input, dim, keepdim=False, out=None) → Tensor
返回新的张量,其中包括输入张量input中指定维度dim中每行的乘积。
若keepdim值为True,则在输出张量中,除了被操作的dim维度值降为1,其它维度与输入张量input相同。否则,dim维度相当于被执行torch.squeeze()维度压缩操作,导致此维度消失,最终输出张量会比输入张量少一个维度。
参数:
- input (Tensor) - 输入Tensor
- dim (int) - 指定维度
- keepdim (bool) - 输出张量是否保持与输入张量有相同数量的维度
- out (Tensor,optional) - 结果张量
例子:
按索引求和
torch.Tensor.indexadd(dim, index, tensor) → Tensor
按索引参数index中所确定的顺序,将参数张量tensor中的元素与执行本方法的张量的元素逐个相加。参数tensor的尺寸必须严格地与执行方法的张量匹配,否则会发生错误。
参数:
- dim (int) - 索引index所指向的维度
- index (LongTensor) - 包含索引数的张量
- tensor (Tensor) - 含有相加元素的张量
例子:
平均数
torch.mean(input)
返回输入张量input中每个元素的平均值。
参数:
- input (Tensor) – 输入张量
例子:
torch.mean(input, dim, keepdim=False, out=None)
返回新的张量,其中包含输入张量input指定维度dim中每行的平均值。
若keepdim值为True,则在输出张量中,除了被操作的dim维度值降为1,其它维度与输入张量input相同。否则,dim维度相当于被执行torch.squeeze()维度压缩操作,导致此维度消失,最终输出张量会比输入张量少一个维度。
参数:
- input (Tensor) - 输入张量
- dim (int) - 指定进行均值计算的维度
- keepdim (bool, optional) - 输出张量是否保持与输入张量有相同数量的维度
- out (Tensor) - 结果张量
例子:
方差
torch.var(input, unbiased=True) → float
返回输入向量input中所有元素的方差。
参数:
- input (Tensor) - 输入张量
- unbiased (bool) - 是否使用基于修正贝塞尔函数的无偏估计
例子:
torch.var(input, dim, keepdim=False, unbiased=True, out=None) → Tensor
返回新的张量,其中包括输入张量input中指定维度dim中每行的方差。
若keepdim值为True,则在输出张量中,除了被操作的dim维度值降为1,其它维度与输入张量input相同。否则,dim维度相当于被执行torch.squeeze()维度压缩操作,导致此维度消失,最终输出张量会比输入张量少一个维度。
参数:
- input (Tensor) - 输入Tensor
- dim (int) - 指定维度
- keepdim (bool) - 输出张量是否保持与输入张量有相同数量的维度
- unbiased (bool) - 是否使用基于修正贝塞尔函数的无偏估计
- out (Tensor,optional) - 结果张量
例子:
最大值
torch.max(input) → float
返回输入张量所有元素的最大值。
参数:
- input (Tensor) - 输入张量
例子:
torch.max(input, dim, keepdim=False, out=None) -> (Tensor, LongTensor)
返回新的张量,其中包括输入张量input中指定维度dim中每行的最大值,同时返回每个最大值的位置索引。
若keepdim值为True,则在输出张量中,除了被操作的dim维度值降为1,其它维度与输入张量input相同。否则,dim维度相当于被执行torch.squeeze()维度压缩操作,导致此维度消失,最终输出张量会比输入张量少一个维度。
参数:
- input (Tensor) - 输入Tensor
- dim (int) - 指定维度
- keepdim (bool) - 输出张量是否保持与输入张量有相同数量的维度
- out (tuple,optional) - 结果张量
例子:
torch.max(input, other, out=None) → Tensor
逐个元素比较张量input与张量other,将比较出的最大值保存到输出张量中。
两个张量尺寸不需要完全相同,但需要支持自动扩展法则。
参数:
- input (Tensor) - 输入Tensor
- other (Tensor) - 另一个输入的Tensor
- out (Tensor,optional) - 结果张量
例子:
最小值
torch.min(input) → float
返回输入张量所有元素的最小值。
参数:
- input (Tensor) - 输入张量
例子:
torch.min(input, dim, keepdim=False, out=None) -> (Tensor, LongTensor)
返回新的张量,其中包括输入张量input中指定维度dim中每行的最小值,同时返回每个最小值的位置索引。
若keepdim值为True,则在输出张量中,除了被操作的dim维度值降为1,其它维度与输入张量input相同。否则,dim维度相当于被执行torch.squeeze()维度压缩操作,导致此维度消失,最终输出张量会比输入张量少一个维度。
参数:
- input (Tensor) - 输入Tensor
- dim (int) - 指定维度
- keepdim (bool) - 输出张量是否保持与输入张量有相同数量的维度
- out (tuple,optional) - 结果张量
例子:
torch.min(input, other, out=None) → Tensor
逐个元素比较张量input与张量other,将比较出的最小值保存到输出张量中。
两个张量尺寸不需要完全相同,但需要支持自动扩展法则。
参数:
- input (Tensor) - 输入Tensor
- other (Tensor) - 另一个输入的Tensor
- out (Tensor,optional) - 结果张量
例子:
平方根倒数
torch.rsqrt(input) → Tensor
返回新的张量,其中包含input张量每个元素平方根的倒数。
参数:
- input (Tensor) – 输入张量
- out (Tensor, optional) – 输出张量
例子:
线性插值
torch.lerp(star,end,weight) → Tensor
基于weight对输入的两个张量start与end逐个元素计算线性插值,结果返回至输出张量。
返回结果是:
参数:
- start (Tensor) – 起始点张量
- end (Tensor) – 终止点张量
- weight (float) – 插入公式的 weight
- out (Tensor, optional) – 结果张量
例子:
双曲正切
torch.tanh(input, out=None) → Tensor
返回新的张量,其中包括输入张量input中每个元素的双曲正切。
参数:
- input (Tensor) - 输入张量
- out (Tensor,optional) - 结果张量
例子: