Функция linalg.norm
Функция torch.linalg.norm вычисляет норму тензора.
Она поддерживает различные типы норм: векторные (L1, L2, бесконечность)
и матричные (Фробениуса, спектральную, ядерную и другие).
Первым параметром функция принимает тензор.
Вторым параметром можно передать порядок нормы (ord).
Третьим параметром указывается размерность (dim), по которой вычисляется норма.
Если размерность не указана, норма вычисляется по всем элементам тензора.
Функция возвращает тензор с вычисленными нормами.
Синтаксис
torch.linalg.norm(input, ord=None, dim=None, keepdim=False)
Пример
Давайте вычислим L2-норму (Евклидову) для одномерного тензора:
import torch
t = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0])
res = torch.linalg.norm(t)
print(res)
Результат выполнения кода:
tensor(7.4162)
Пример
Вычислим L1-норму, указав порядок нормы:
import torch
t = torch.tensor([1.0, -2.0, 3.0, -4.0, 5.0])
res = torch.linalg.norm(t, ord=1)
print(res)
Результат выполнения кода:
tensor(15.)
Пример
Вычислим норму по строкам для двумерного тензора с помощью параметра dim:
import torch
t = torch.tensor([
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
])
res = torch.linalg.norm(t, dim=1)
print(res)
Результат выполнения кода:
tensor([3.7417, 8.7750])
Пример
Вычислим матричную норму Фробениуса, сохранив размерность с помощью keepdim:
import torch
t = torch.tensor([
[1.0, 2.0],
[3.0, 4.0],
])
res = torch.linalg.norm(t, ord='fro', keepdim=True)
print(res)
Результат выполнения кода:
tensor([[5.4772]])
Смотрите также
-
функцию
vector_norm,
которая вычисляет векторные нормы с дополнительными опциями -
функцию
matrix_norm,
которая специализируется на матричных нормах -
функцию
svd,
которая выполняет сингулярное разложение, используемое для вычисления некоторых норм -
функцию
eig,
которая находит собственные значения, связанные с некоторыми типами норм