Spec-Zone.ru › PyTorch 2.14

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

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

‘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, эта функция синхронизирует это устройство с CPU, если 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', необязательный) – тип матричной нормы, используемой при вычислениях (см. выше). Значение по умолчанию: None
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор. Игнорируется, если 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]])

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

Spec-Zone.ru

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