Spec-Zone.ru › PyTorch 2.14

torch.trapezoid

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

Вычисляет правило трапеций вдоль dim. По умолчанию предполагается, что расстояние между элементами равно 1, но dx можно использовать, чтобы задать другое постоянное расстояние, а x — чтобы задать произвольное расстояние вдоль dim. Следует указать только один из параметров: x или dx.

Предполагая, что y — одномерный тензор с элементами y0,y1,...,yn{y_0, y_1, ..., y_n}, вычисление по умолчанию имеет вид

∑i=1n12(yi+yi−1)\begin{aligned} \sum_{i = 1}^{n} \frac{1}{2} (y_i + y_{i-1}) \end{aligned}

Если указан dx, вычисление принимает вид

∑i=1nΔx2(yi+yi−1)\begin{aligned} \sum_{i = 1}^{n} \frac{\Delta x}{2} (y_i + y_{i-1}) \end{aligned}

то есть результат фактически умножается на dx. Если указан x, и x также является одномерным тензором с элементами x0,x1,...,xn{x_0, x_1, ..., x_n}, вычисление принимает вид

∑i=1n(xi−xi−1)2(yi+yi−1)\begin{aligned} \sum_{i = 1}^{n} \frac{(x_i - x_{i-1})}{2} (y_i + y_{i-1}) \end{aligned}

Если x и y имеют одинаковый размер, вычисление выполняется описанным выше способом, и широковещание не требуется. Если их размеры различаются, функция выполняет широковещание следующим образом. Для x и y функция вычисляет разность между последовательными элементами вдоль измерения dim. В результате создаются два тензора, x_diff и y_diff, форма которых совпадает с формой исходных тензоров, за исключением того, что длина вдоль измерения dim уменьшается на 1. Затем эти два тензора подвергаются широковещанию для вычисления итогового результата по правилу трапеций. Подробности см. в примерах ниже.

Примечание

Правило трапеций — это метод приближенного вычисления определенного интеграла функции путем усреднения левых и правых сумм Римана. Точность приближения повышается с увеличением разрешения разбиения.

Параметры:
  • y (Tensor) – Значения, используемые при вычислении по правилу трапеций.
  • x (Tensor) – Если указан, задает расстояние между значениями, как описано выше.
Именованные аргументы:
  • dx (float) – постоянное расстояние между значениями. Если не указаны ни x, ни dx, по умолчанию используется значение 1. Фактически умножает результат на это значение.
  • dim (int) – Измерение, вдоль которого вычисляется правило трапеций. По умолчанию используется последнее (самое внутреннее) измерение.

Примеры:

>>> # 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.])

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.trapezoid.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API