Spec-Zone.ru › PyTorch 1

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.

Примечание

Несмотря на то, что 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API