Spec-Zone.ru › PyTorch 2

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 (Тензор) – тензор формы (*, n) или (*, m, n), где * равно нулю или более размерностей пакетной обработки
  • ord (int, float, inf, -inf, 'fro', 'nuc', необязательно) – порядок нормы. По умолчанию: None
  • dim (int, Tuple[int], необязательно) – измерения, по которым вычислять норму вектора или матрицы. См. выше приведенное поведение, когда dim= None. По умолчанию: None
  • keepdim (bool, необязательно) – Если установлено True, размерности сокращения сохраняются в результате как размерности с размером один. По умолчанию: False
Ключевые аргументы
  • out (Тензор, необязательно) – выходной тензор. Игнорируется, если 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/2.1/generated/torch.linalg.norm.html

Spec-Zone.ru

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