Pytorch中tensor常用语法

为君一笑 提交于 2019-12-21 20:07:40

我把常用的Tensor的数学运算总结到这里,以防自己在使用PyTorch做实验时,忘记这些方法应该传什么参数。总结的方法包括:

  1. Tensor求和以及按索引求和:torch.sum() 和 torch.Tensor.indexadd()
  2. Tensor元素乘积:torch.prod(input)
  3. 对Tensor求均值、方差、极值:torch.mean() 、 torch.var() 、 torch.max() 、 torch.min()
  4. 求Tensor的平方根倒数:torch.rsqrt(input)
  5. 求Tensor的线性插值: torch.lerp(star,end,weight)
  6. 求Tensor的\双曲正切:torch.tanh(input, out=None)

元素求和

torch.sum(input) \rightarrow Tensor
返回输入向量input中所有元素的和。

参数:

  • input (Tensor) - 输入张量

例子:
在这里插入图片描述

torch.sum(input, dim, keepdim=False, out=None) \rightarrow Tensor

返回新的张量,其中包括输入张量input中指定维度dim中每行的和。

若keepdim值为True,则在输出张量中,除了被操作的dim维度值降为1,其它维度与输入张量input相同。否则,dim维度相当于被执行torch.squeeze()维度压缩操作,导致此维度消失,最终输出张量会比输入张量少一个维度。

参数:

  • input (Tensor) - 输入Tensor
  • dim (int) - 指定维度
  • keepdim (bool) - 输出张量是否保持与输入张量有相同数量的维度
  • out (Tensor,optional) - 结果张量

例子:
在这里插入图片描述

元素乘积

torch.prod(input) \rightarrow Tensor
返回输入张量input所有元素的乘积。

参数:

  • input (Tensor) - 输入张量

例子:
在这里插入图片描述

torch.prod(input, dim, keepdim=False, out=None) \rightarrow 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) \rightarrow Tensor

按索引参数index中所确定的顺序,将参数张量tensor中的元素与执行本方法的张量的元素逐个相加。参数tensor的尺寸必须严格地与执行方法的张量匹配,否则会发生错误。

参数:

  • dim (int) - 索引index所指向的维度
  • index (LongTensor) - 包含索引数的张量
  • tensor (Tensor) - 含有相加元素的张量

例子:
在这里插入图片描述

平均数

torch.mean(input)\rightarrow Tensor

返回输入张量input中每个元素的平均值。

参数:

  • input (Tensor) – 输入张量

例子:
在这里插入图片描述
torch.mean(input, dim, keepdim=False, out=None) \rightarrow Tensor

返回新的张量,其中包含输入张量input指定维度dim中每行的平均值。

若keepdim值为True,则在输出张量中,除了被操作的dim维度值降为1,其它维度与输入张量input相同。否则,dim维度相当于被执行torch.squeeze()维度压缩操作,导致此维度消失,最终输出张量会比输入张量少一个维度。

参数:

  • input (Tensor) - 输入张量
  • dim (int) - 指定进行均值计算的维度
  • keepdim (bool, optional) - 输出张量是否保持与输入张量有相同数量的维度
  • out (Tensor) - 结果张量

例子:
在这里插入图片描述

方差

torch.var(input, unbiased=True) \rightarrow Tensor

返回输入向量input中所有元素的方差。

参数:

  • input (Tensor) - 输入张量
  • unbiased (bool) - 是否使用基于修正贝塞尔函数的无偏估计

例子:
在这里插入图片描述

torch.var(input, dim, keepdim=False, unbiased=True, out=None) \rightarrow 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) \rightarrow Tensor

返回输入张量所有元素的最大值。

参数:

  • input (Tensor) - 输入张量

例子:
在这里插入图片描述

torch.max(input, dim, keepdim=False, out=None) \rightarrow (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) \rightarrow Tensor

逐个元素比较张量input与张量other,将比较出的最大值保存到输出张量中。
两个张量尺寸不需要完全相同,但需要支持自动扩展法则。

参数:

  • input (Tensor) - 输入Tensor
  • other (Tensor) - 另一个输入的Tensor
  • out (Tensor,optional) - 结果张量

例子:
在这里插入图片描述

最小值

torch.min(input) \rightarrow Tensor
返回输入张量所有元素的最小值。

参数:

  • input (Tensor) - 输入张量

例子:
在这里插入图片描述

torch.min(input, dim, keepdim=False, out=None) \rightarrow (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) \rightarrow Tensor

逐个元素比较张量input与张量other,将比较出的最小值保存到输出张量中。
两个张量尺寸不需要完全相同,但需要支持自动扩展法则。

参数:

  • input (Tensor) - 输入Tensor
  • other (Tensor) - 另一个输入的Tensor
  • out (Tensor,optional) - 结果张量

例子:
在这里插入图片描述

平方根倒数

torch.rsqrt(input) \rightarrow Tensor

返回新的张量,其中包含input张量每个元素平方根的倒数。

参数:

  • input (Tensor) – 输入张量
  • out (Tensor, optional) – 输出张量

例子:
在这里插入图片描述

线性插值

torch.lerp(star,end,weight) \rightarrow Tensor

基于weight对输入的两个张量start与end逐个元素计算线性插值,结果返回至输出张量。

返回结果是: outsi=starti+weight(endistarti){outs}_i = {start}_i + weight * (end_i - start_i)

参数:

  • start (Tensor) – 起始点张量
  • end (Tensor) – 终止点张量
  • weight (float) – 插入公式的 weight
  • out (Tensor, optional) – 结果张量

例子:
在这里插入图片描述

双曲正切

torch.tanh(input, out=None) \rightarrow Tensor

返回新的张量,其中包括输入张量input中每个元素的双曲正切。

参数:

  • input (Tensor) - 输入张量
    -out (Tensor,optional) - 结果张量

例子:
在这里插入图片描述
最后说一下生成随机数Tensor的方法,比如:torch.rand()、torch.randn()、torch.normal()、torch.linespace()。

均匀分布

*torch.rand(sizes, out=None) \rightarrow Tensor

返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数。张量的形状由参数sizes定义。

参数:

  • sizes (int…) - 整数序列,定义了输出张量的形状
  • out (Tensor, optinal) - 结果张量

例子:
在这里插入图片描述

标准正态分布

*torch.randn(sizes, out=None) \rightarrow Tensor

返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。

参数:

  • sizes (int…) - 整数序列,定义了输出张量的形状
  • out (Tensor, optinal) - 结果张量

例子:
在这里插入图片描述

离散正态分布

torch.normal(means, std, out=None) \rightarrow Tensor

返回一个张量,包含了从指定均值means和标准差std的离散正态分布中抽取的一组随机数。

标准差std是一个张量,包含每个输出元素相关的正态分布标准差。

参数:

  • means (float, optional) - 均值
  • std (Tensor) - 标准差
  • out (Tensor) - 输出张量

例子:
在这里插入图片描述

线性间距向量

torch.linspace(start, end, steps=100, out=None) \rightarrow Tensor

返回一个1维张量,包含在区间start和end上均匀间隔的step个点。

输出张量的长度由steps决定。

参数:

  • start (float) - 区间的起始点
  • end (float) - 区间的终点
  • steps (int) - 在start和end间生成的样本数
  • out (Tensor, optional) - 结果张量

例子:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!