torch.norm
-
torch.norm(input, p='fro', dim=None, keepdim=False, out=None, dtype=None)[source] -
Возвращает матричную или векторную норму заданного тензора.
Предупреждение
torch.norm устарел и может быть удален в будущих выпусках PyTorch. Его документация и поведение могут быть неверными, и он больше не активно поддерживается.
Используйте
torch.linalg.vector_norm()для вычисления векторных норм иtorch.linalg.matrix_norm()для вычисления матричных норм. Для функции с аналогичным поведением см.torch.linalg.norm(). Обратите внимание, однако, что сигнатура этих функций немного отличается от сигнатурыtorch.norm.- Параметры
-
-
input (Тензор) – Входной тензор. Его тип данных должен быть либо типом с плавающей запятой, либо комплексным типом. Для комплексных входных данных норма вычисляется с использованием абсолютного значения каждого элемента. Если входной тензор комплексный и ни
dtype, ниoutне указаны, тип данных результата будет соответствующим типом с плавающей запятой (например, float, еслиinputявляется complexfloat). -
p (int, float, inf, -inf, 'fro', 'nuc', необязательно) –
порядок нормы. Значение по умолчанию:
'fro'Следующие нормы могут быть вычислены:ord
матричная норма
векторная норма
’fro’
норма Фробениуса
–
‘nuc’
ядерная норма
–
Число
–
sum(abs(x)**ord)**(1./ord)
Векторная норма может быть вычислена по любому количеству измерений. Соответствующие измерения
inputсглаживаются в одно измерение, и норма вычисляется по этому сглаженному измерению.Норма Фробениуса даёт тот же результат, что и
p=2во всех случаях, кроме случая, когдаdimпредставляет собой список из трёх или более измерений, в котором случае норма Фробениуса выдаёт ошибку.Ядерная норма может быть вычислена только по ровно двум измерениям.
-
dim (int, кортеж целых чисел, список целых чисел, необязательно) – Указывает, по какому измерению или измерениям
inputвычислять норму. ЕслиdimравноNone, норма будет вычислена по всем измерениямinput. Если тип нормы, указанный вp, не поддерживает указанное количество измерений, произойдёт ошибка. -
keepdim (bool, необязательно) – сохранить ли выходной тензор с измерением или нет. Игнорируется, если
dim=Noneиout=None. Значение по умолчанию:False -
out (Тензор, необязательно) – выходной тензор. Игнорируется, если
dim=Noneиout=None. -
dtype (
torch.dtype, optional) – желаемый тип данных возвращаемого тензора. При указании входной тензор приводится к типуdtypeво время выполнения операции. Значение по умолчанию: None.
-
input (Тензор) – Входной тензор. Его тип данных должен быть либо типом с плавающей запятой, либо комплексным типом. Для комплексных входных данных норма вычисляется с использованием абсолютного значения каждого элемента. Если входной тензор комплексный и ни
Примечание
Несмотря на то, что
p='fro'поддерживает любое количество измерений, истинное математическое определение нормы Фробениуса применимо только к тензорам с ровно двумя измерениями.torch.linalg.matrix_norm()сord='fro'соответствует математическому определению, так как оно может быть применено только к ровно двум измерениям.Пример:
>>> import torch >>> a = torch.arange(9, dtype= torch.float) - 4 >>> b = a.reshape((3, 3)) >>> torch.norm(a) tensor(7.7460) >>> torch.norm(b) tensor(7.7460) >>> torch.norm(a, float('inf')) tensor(4.) >>> torch.norm(b, float('inf')) tensor(4.) >>> c = torch.tensor([[ 1, 2, 3], [-1, 1, 4]] , dtype=torch.float) >>> torch.norm(c, dim=0) tensor([1.4142, 2.2361, 5.0000]) >>> torch.norm(c, dim=1) tensor([3.7417, 4.2426]) >>> torch.norm(c, p=1, dim=1) tensor([6., 6.]) >>> d = torch.arange(8, dtype=torch.float).reshape(2, 2, 2) >>> torch.norm(d, dim=(1, 2)) tensor([ 3.7417, 11.2250]) >>> torch.norm(d[0, :, :]), torch.norm(d[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.norm.html