當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。