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’ядерная норма
– не поддерживается –
infmax(sum(abs(x), dim=1))max(abs(x))-infmin(sum(abs(x), dim=1))min(abs(x))0– не поддерживается –
sum(x != 0)1max(sum(abs(x), dim=0))как ниже
-1min(sum(abs(x), dim=0))как ниже
2наибольшее сингулярное значение
как ниже
-2наименьшее сингулярное значение
как ниже
другие
intилиfloat– не поддерживается –
sum(abs(x)^{ord})^{(1 / ord)}где
infотносится кfloat(‘inf’), объектуinfNumPy или любому эквивалентному объекту.См. также
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
-
A (Тензор) – тензор формы
- Ключевые аргументы
-
-
out (Тензор, необязательно) – выходной тензор. Игнорируется, если
None. По умолчанию:None. -
dtype (
torch.dtype, optional) – Если указано, входной тензор приводится к типуdtypeперед выполнением операции, и тип возвращаемого тензора будетdtype. По умолчанию:None
-
out (Тензор, необязательно) – выходной тензор. Игнорируется, если
- Возвращает
-
Вещественный тензор, даже когда
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