Spec-Zone.ru › PyTorch 1

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 (Тензор) – Значения, используемые при вычислении правила трапеций.
  • x (Тензор) – Если указано, определяет шаг между значениями, как указано выше.
Ключевые аргументы:
  • 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/1.13/generated/torch.trapezoid.html

Spec-Zone.ru

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