torch.norm
-
torch.norm(input, p='fro', dim=None, keepdim=False, out=None, dtype=None)[source] -
Возвращает матричную или векторную норму заданного тензора.
Предупреждение
torch.norm устарел и может быть удален в будущей версии PyTorch. Его документация и поведение могут быть некорректными, и он больше не поддерживается.
Используйте
torch.linalg.norm()вместо него, илиtorch.linalg.vector_norm()для вычисления векторных норм иtorch.linalg.matrix_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.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/1.13/generated/torch.norm.html