Функция linalg.matrix_norm
Функция linalg.matrix_norm вычисляет матричную норму для входного тензора.
В зависимости от указанного типа нормы, вычисляется норма Фробениуса,
спектральная норма или другие виды матричных норм.
Первый аргумент функции - входной тензор, второй - тип нормы.
Третий аргумент определяет размерность, по которой вычисляется норма.
Синтаксис
torch.linalg.matrix_norm(input, ord='fro', dim=[-2, -1], keepdim=False, dtype=None)
Параметры функции:
-
input- входной тензор. -
ord- тип нормы. По умолчанию'fro'(норма Фробениуса). Также поддерживаются'nuc'(ядерная норма) и целые числа. -
dim- размерности для вычисления нормы. По умолчанию последние две размерности. -
keepdim- сохранять ли размерность. По умолчаниюFalse. -
dtype- желаемый тип данных результата. По умолчаниюNone.
Пример
Вычислим норму Фробениуса для двумерной матрицы:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
], dtype=torch.float)
res = torch.linalg.matrix_norm(t)
print(res)
Результат выполнения кода:
tensor(9.5394)
Пример
Вычислим спектральную норму матрицы (наибольшее сингулярное число):
import torch
t = torch.tensor([
[1, 2],
[3, 4],
], dtype=torch.float)
res = torch.linalg.matrix_norm(t, ord=2)
print(res)
Результат выполнения кода:
tensor(5.4650)
Пример
Вычислим ядерную норму матрицы (сумма сингулярных чисел):
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
], dtype=torch.float)
res = torch.linalg.matrix_norm(t, ord='nuc')
print(res)
Результат выполнения кода:
tensor(16.8481)
Пример
Вычислим норму Фробениуса с сохранением размерности:
import torch
t = torch.tensor([
[1, 2],
[3, 4],
[5, 6],
], dtype=torch.float)
res = torch.linalg.matrix_norm(t, keepdim=True)
print(res)
print(res.shape)
Результат выполнения кода:
tensor([[9.5394]])
torch.Size([1, 1])
Пример
Вычислим норму для пакета матриц с явным указанием размерности:
import torch
t = torch.tensor([
[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
], dtype=torch.float)
res = torch.linalg.matrix_norm(t, dim=(-2, -1))
print(res)
Результат выполнения кода:
tensor([5.4772, 13.1909])
Смотрите также
-
функцию
norm,
которая вычисляет векторные и матричные нормы -
функцию
vector_norm,
которая вычисляет векторные нормы -
функцию
svd,
которая раскладывает матрицу на сингулярные числа -
функцию
det,
которая вычисляет определитель матрицы