Spec-Zone.ru › PyTorch 2

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.

Примечание

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

Spec-Zone.ru

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