Spec-Zone.ru › PyTorch 1

torch.linalg.cond

torch.linalg.cond(A, p=None, *, out=None) → Tensor

Вычисляет число обусловленности матрицы относительно нормы матрицы.

Пусть K\mathbb{K} обозначает R\mathbb{R} или C\mathbb{C}, число обусловленности κ\kappa матрицы A∈Kn×nA \in \mathbb{K}^{n \times n} определяется как

κ(A)=∥A∥p∥A−1∥p\kappa(A) = \|A\|_p\|A^{-1}\|_p

Число обусловленности A измеряет числовую устойчивость линейной системы AX = B относительно нормы матрицы.

Поддерживает входные типы данных float, double, cfloat и cdouble. Также поддерживает пакеты матриц, и если A является пакетом матриц, то выходные данные имеют те же размерности пакета.

p определяет норму матрицы, которая вычисляется. Поддерживаются следующие нормы:

p

норма матрицы

None

норма (по наибольшему сингулярному значению)

‘fro’

норма Фробениуса

‘nuc’

ядерная норма

inf

max(sum(abs(x), dim=1))

-inf

min(sum(abs(x), dim=1))

1

max(sum(abs(x), dim=0))

-1

min(sum(abs(x), dim=0))

2

наибольшее сингулярное значение

-2

наименьшее сингулярное значение

где inf относится к float(‘inf’), объекту inf NumPy или любому эквивалентному объекту.

Если p является одним из (‘fro’, ‘nuc’, inf, -inf, 1, -1), эта функция использует torch.linalg.norm() и torch.linalg.inv(). В таком случае, матрица (или каждая матрица в пакете) A должна быть квадратной и обратимой.

Для p в (2, -2), эта функция может быть вычислена с использованием сингулярных значений σ1≥…≥σn\sigma_1 \geq \ldots \geq \sigma_n

κ2(A)=σ1σnκ−2(A)=σnσ1\kappa_2(A) = \frac{\sigma_1}{\sigma_n}\qquad \kappa_{-2}(A) = \frac{\sigma_n}{\sigma_1}

В этих случаях это вычисляется с помощью torch.linalg.svdvals(). Для этих норм матрица (или каждая матрица в пакете) A может иметь любую форму.

Примечание

Когда входные данные находятся на устройстве CUDA, эта функция синхронизирует это устройство с процессором, если p является одним из (‘fro’, ‘nuc’, inf, -inf, 1, -1).

См. также

torch.linalg.solve() для функции решения линейных систем квадратных матриц.

torch.linalg.lstsq() для функции решения линейных систем общих матриц.

Параметры:
  • A (Tensor) – тензор формы (*, m, n) где * - ноль или более размерностей пакета для p в (2, -2), и формы (*, n, n) где каждая матрица обратима для p в (‘fro’, ‘nuc’, inf, -inf, 1, -1).
  • p (int, inf, -inf, 'fro', 'nuc', optional) – тип нормы матрицы для использования в вычислениях (см. выше). По умолчанию: None
Ключевые аргументы:

out (Tensor, optional) – выходной тензор. Игнорируется, если None. По умолчанию: None.

Возвращаемое значение:

Вещественный тензор, даже когда A комплексный.

Исключения:

RuntimeError – если p является одним из (‘fro’, ‘nuc’, inf, -inf, 1, -1) и матрица A или любая матрица в пакете A не является квадратной или необратимой.

Примеры:

>>> A = torch.randn(3, 4, 4, dtype=torch.complex64)
>>> torch.linalg.cond(A)
>>> A = torch.tensor([[1., 0, -1], [0, 1, 0], [1, 0, 1]])
>>> torch.linalg.cond(A)
tensor([1.4142])
>>> torch.linalg.cond(A, 'fro')
tensor(3.1623)
>>> torch.linalg.cond(A, 'nuc')
tensor(9.2426)
>>> torch.linalg.cond(A, float('inf'))
tensor(2.)
>>> torch.linalg.cond(A, float('-inf'))
tensor(1.)
>>> torch.linalg.cond(A, 1)
tensor(2.)
>>> torch.linalg.cond(A, -1)
tensor(1.)
>>> torch.linalg.cond(A, 2)
tensor([1.4142])
>>> torch.linalg.cond(A, -2)
tensor([0.7071])

>>> A = torch.randn(2, 3, 3)
>>> torch.linalg.cond(A)
tensor([[9.5917],
        [3.2538]])
>>> A = torch.randn(2, 3, 3, dtype=torch.complex64)
>>> torch.linalg.cond(A)
tensor([[4.6245],
        [4.5671]])

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.linalg.cond.html

Spec-Zone.ru

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