Spec-Zone.ru › PyTorch 1

torch.linalg.norm

torch.linalg.norm(A, ord=None, dim=None, keepdim=False, *, out=None, dtype=None) → Tensor

Вычисляет векторную или матричную норму.

Поддерживает входные данные типов float, double, cfloat и cdouble.

Определяется, вычисляется ли эта функция векторная или матричная норма следующим образом:

  • Если dim является int, будет вычислена векторная норма.
  • Если dim является 2-tuple, будет вычислена матричная норма.
  • Если dim= None и ord= None, A будет сглажена до 1D, и будет вычислена 2-норма полученного вектора.
  • Если dim= None и ord != None, A должна быть 1D или 2D.

ord определяет вычисляемую норму. Поддерживаются следующие нормы:

ord

норма для матриц

норма для векторов

None (по умолчанию)

норма Фробениуса

2-норма (см. ниже)

‘fro’

норма Фробениуса

– не поддерживается –

‘nuc’

ядерная норма

– не поддерживается –

inf

max(sum(abs(x), dim=1))

max(abs(x))

-inf

min(sum(abs(x), dim=1))

min(abs(x))

0

– не поддерживается –

sum(x != 0)

1

max(sum(abs(x), dim=0))

как ниже

-1

min(sum(abs(x), dim=0))

как ниже

2

наибольшее сингулярное значение

как ниже

-2

наименьшее сингулярное значение

как ниже

другие int или float

– не поддерживается –

sum(abs(x)^{ord})^{(1 / ord)}

где inf относится к float(‘inf’), объекту inf NumPy или любому эквивалентному объекту.

См. также

torch.linalg.vector_norm() вычисляет векторную норму.

torch.linalg.matrix_norm() вычисляет матричную норму.

Вышеуказанные функции часто более понятны и гибкие, чем использование torch.linalg.norm(). Например, torch.linalg.norm(A, ord=1, dim=(0, 1)) всегда вычисляет матричную норму, но с torch.linalg.vector_norm(A, ord=1, dim=(0, 1)) можно вычислить векторную норму по двум измерениям.

Параметры:
  • A (Tensor) – тензор формы (*, n) или (*, m, n) где * — ноль или более пакетных измерений
  • ord (int, float, inf, -inf, 'fro', 'nuc', optional) – порядок нормы. По умолчанию: None
  • dim (int, Tuple[int], optional) – измерения, по которым вычислять векторную или матричную норму. См. выше поведение, когда dim= None. По умолчанию: None
  • keepdim (bool, optional) – Если установлено в True, уменьшенные измерения сохраняются в результате как измерения с размером один. По умолчанию: False
Ключевые аргументы:
  • out (Tensor, optional) – выходной тензор. Игнорируется, если None. По умолчанию: None.
  • dtype (torch.dtype, optional) – Если указано, входной тензор приводится к типу dtype перед выполнением операции, а тип возвращаемого тензора будет dtype. По умолчанию: None
Возвращает:

Вещественный тензор, даже когда A является комплексным.

Примеры:

>>> from torch import linalg as LA
>>> a = torch.arange(9, dtype=torch.float) - 4
>>> a
tensor([-4., -3., -2., -1.,  0.,  1.,  2.,  3.,  4.])
>>> B = a.reshape((3, 3))
>>> B
tensor([[-4., -3., -2.],
        [-1.,  0.,  1.],
        [ 2.,  3.,  4.]])

>>> LA.norm(a)
tensor(7.7460)
>>> LA.norm(B)
tensor(7.7460)
>>> LA.norm(B, 'fro')
tensor(7.7460)
>>> LA.norm(a, float('inf'))
tensor(4.)
>>> LA.norm(B, float('inf'))
tensor(9.)
>>> LA.norm(a, -float('inf'))
tensor(0.)
>>> LA.norm(B, -float('inf'))
tensor(2.)

>>> LA.norm(a, 1)
tensor(20.)
>>> LA.norm(B, 1)
tensor(7.)
>>> LA.norm(a, -1)
tensor(0.)
>>> LA.norm(B, -1)
tensor(6.)
>>> LA.norm(a, 2)
tensor(7.7460)
>>> LA.norm(B, 2)
tensor(7.3485)

>>> LA.norm(a, -2)
tensor(0.)
>>> LA.norm(B.double(), -2)
tensor(1.8570e-16, dtype=torch.float64)
>>> LA.norm(a, 3)
tensor(5.8480)
>>> LA.norm(a, -3)
tensor(0.)

Использование аргумента dim для вычисления векторных норм:

>>> c = torch.tensor([[1., 2., 3.],
...                   [-1, 1, 4]])
>>> LA.norm(c, dim=0)
tensor([1.4142, 2.2361, 5.0000])
>>> LA.norm(c, dim=1)
tensor([3.7417, 4.2426])
>>> LA.norm(c, ord=1, dim=1)
tensor([6., 6.])

Использование аргумента dim для вычисления матричных норм:

>>> A = torch.arange(8, dtype=torch.float).reshape(2, 2, 2)
>>> LA.norm(A, dim=(1,2))
tensor([ 3.7417, 11.2250])
>>> LA.norm(A[0, :, :]), LA.norm(A[1, :, :])
(tensor(3.7417), tensor(11.2250))

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

Spec-Zone.ru

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