Spec-Zone.ru › PyTorch 2

torch.trapezoid

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

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

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

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

Если dx указан, вычисление становится

∑i=1n−1Δx2(yi+yi−1)\begin{aligned} \sum_{i = 1}^{n-1} \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−1(xi−xi−1)2(yi+yi−1)\begin{aligned} \sum_{i = 1}^{n-1} \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.])

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

Spec-Zone.ru

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