torch.trapezoid
-
torch.trapezoid(y, x=None, *, dx=None, dim=-1) → Tensor -
Вычисляет правило трапеций вдоль
dim. По умолчанию расстояние между элементами предполагается равным 1, ноdxможет быть использовано для указания другого постоянного расстояния, аxможет быть использовано для указания произвольного расстояния вдольdim.Предполагая, что
y— это одномерный тензор с элементами , вычисление по умолчанию равноЕсли
dxуказан, вычисление становитсяв действительности умножая результат на
dx. Когдаxуказан, предполагая, чтоxтакже является одномерным тензором с элементами , вычисление становитсяКогда
xиyимеют одинаковый размер, вычисление выполняется, как описано выше, и вещание не требуется. Поведение вещания этой функции таково, когда их размеры различны. Дляxиy, функция вычисляет разность между последовательными элементами вдоль измеренияdim. Это фактически создает два тензораx_diffиy_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.])
© 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