当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch trapezoid用法及代码示例


本文简要介绍python语言中 torch.trapezoid 的用法。

用法:

torch.trapezoid(y, x=None, *, dx=None, dim=- 1) → Tensor

参数

  • y(Tensor) -计算梯形规则时使用的值。

  • x(Tensor) -如果指定,则定义上面指定的值之间的间距。

关键字参数

  • dx(float) -值之间的恒定间距。如果 xdx 均未指定,则默认为 1。有效地将结果乘以其值。

  • dim(int) -计算梯形规则的维度。默认情况下最后一个(最里面的)维度。

沿 dim 计算 trapezoidal rule 。默认情况下,元素之间的间距假定为 1,但 dx 可用于指定不同的常数间距,而 x 可用于指定沿 dim 的任意间距。

假设 y 是具有元素 的一维张量,则默认计算为

当指定dx 时,计算变为

有效地将结果乘以 dx 。当指定 x 时,假设 x 也是具有元素 的一维张量,则计算变为

xy大小相同时,计算如上所述,不需要广播。当它们的大小不同时,该函数的广播行为如下。对于 xy ,该函数计算沿维度 dim 的连续元素之间的差异。这有效地创建了两个张量 x_diffy_diff ,它们具有与原始张量相同的形状,除了它们沿维度 dim 的长度减 1。之后,这两个张量一起广播以计算最终输出作为梯形规则的一部分。有关详细信息,请参阅下面的示例。

注意

梯形法则是一种通过对函数的左右黎曼和求平均来逼近函数定积分的技术。随着分区分辨率的增加,近似值变得更加准确。

例子:

>>> # Computes the trapezoidal rule in 1D, spacing is implicitly 1
>>> y = torch.tensor([1, 5, 10])
>>> torch.trapezoid(y)
tensor(10.5)

>>> # Computes the same trapezoidal rule directly to verify
>>> (1 + 10 + 10) / 2
10.5

>>> # Computes the trapezoidal rule in 1D with constant spacing of 2
>>> # NOTE: the result is the same as before, but multiplied by 2
>>> torch.trapezoid(y, dx=2)
21.0

>>> # Computes the trapezoidal rule in 1D with arbitrary spacing
>>> x = torch.tensor([1, 3, 6])
>>> torch.trapezoid(y, x)
28.5

>>> # Computes the same trapezoidal rule directly to verify
>>> ((3 - 1) * (1 + 5) + (6 - 3) * (5 + 10)) / 2
28.5

>>> # Computes the trapezoidal rule for each row of a 3x3 matrix
>>> y = torch.arange(9).reshape(3, 3)
tensor([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])
>>> torch.trapezoid(y)
tensor([ 2., 8., 14.])

>>> # Computes the trapezoidal rule for each column of the matrix
>>> torch.trapezoid(y, dim=0)
tensor([ 6., 8., 10.])

>>> # Computes the trapezoidal rule for each row of a 3x3 ones matrix
>>> #   with the same arbitrary spacing
>>> y = torch.ones(3, 3)
>>> x = torch.tensor([1, 3, 6])
>>> torch.trapezoid(y, x)
array([5., 5., 5.])

>>> # Computes the trapezoidal rule for each row of a 3x3 ones matrix
>>> #   with different arbitrary spacing per row
>>> y = torch.ones(3, 3)
>>> x = torch.tensor([[1, 2, 3], [1, 3, 5], [1, 4, 7]])
>>> torch.trapezoid(y, x)
array([2., 4., 6.])

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.trapezoid。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。