Spec-Zone.ru › PyTorch 2.14

torch.linalg.matrix_rank

torch.linalg.matrix_rank(A, *, atol=None, rtol=None, hermitian=False, out=None) → Tensor [исходный код]

Вычисляет численный ранг матрицы.

Ранг матрицы вычисляется как количество сингулярных значений (или собственных значений по абсолютной величине, если hermitian= True), которые больше порогового значения max⁡(atol,σ1∗rtol)\max(\text{atol}, \sigma_1 * \text{rtol}), где σ1\sigma_1 — наибольшее сингулярное значение (или собственное значение).

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

Если hermitian= True, предполагается, что A является эрмитовой, если она комплексная, или симметричной, если она вещественная; эта характеристика не проверяется внутри функции. Вместо этого при вычислениях используется только нижняя треугольная часть матрицы.

Если rtol не задано и A — матрица размерности (m, n), относительный допуск задаётся равным rtol=max⁡(m,n)ε\text{rtol} = \max(m, n) \varepsilon, а ε\varepsilon — значение эпсилон для типа данных A (см. finfo). Если rtol не задано, а atol задано значением больше нуля, то rtol устанавливается равным нулю.

Если atol или rtol является torch.Tensor, его форма должна быть совместима с формой сингулярных значений A, возвращаемых функцией torch.linalg.svdvals().

Примечание

У этой функции есть совместимый с NumPy вариант linalg.matrix_rank(A, tol, hermitian=False). Однако использование позиционного аргумента tol считается устаревшим; вместо него следует использовать atol и rtol.

Примечание

Ранг матрицы вычисляется с помощью сингулярного разложения torch.linalg.svdvals(), если hermitian= False (по умолчанию), и разложения по собственным значениям torch.linalg.eigvalsh(), если hermitian= True. Если входные данные находятся на устройстве CUDA, эта функция синхронизирует это устройство с CPU.

Параметры:
  • A (Tensor) – тензор формы (*, m, n), где * — ноль или более пакетных размерностей.
  • tol (float, Tensor, необязательный) – [совместимость с NumPy] Псевдоним для atol. Значение по умолчанию: None.
Именованные аргументы:
  • atol (float, Tensor, необязательный) – абсолютный допуск. Если None, считается равным нулю. Значение по умолчанию: None.
  • rtol (float, Tensor, необязательный) – относительный допуск. См. выше значение, которое он принимает, если None. Значение по умолчанию: None.
  • hermitian (bool) – указывает, является ли A эрмитовой для комплексных данных или симметричной для вещественных. Значение по умолчанию: False.
  • out (Tensor, необязательный) – выходной тензор. Игнорируется, если None. Значение по умолчанию: None.

Примеры:

>>> A = torch.eye(10)
>>> torch.linalg.matrix_rank(A)
tensor(10)
>>> B = torch.eye(10)
>>> B[0, 0] = 0
>>> torch.linalg.matrix_rank(B)
tensor(9)

>>> A = torch.randn(4, 3, 2)
>>> torch.linalg.matrix_rank(A)
tensor([2, 2, 2, 2])

>>> A = torch.randn(2, 4, 2, 3)
>>> torch.linalg.matrix_rank(A)
tensor([[2, 2, 2, 2],
        [2, 2, 2, 2]])

>>> A = torch.randn(2, 4, 3, 3, dtype=torch.complex64)
>>> torch.linalg.matrix_rank(A)
tensor([[3, 3, 3, 3],
        [3, 3, 3, 3]])
>>> torch.linalg.matrix_rank(A, hermitian=True)
tensor([[3, 3, 3, 3],
        [3, 3, 3, 3]])
>>> torch.linalg.matrix_rank(A, atol=1.0, rtol=0.0)
tensor([[3, 2, 2, 2],
        [1, 2, 1, 2]])
>>> torch.linalg.matrix_rank(A, atol=1.0, rtol=0.0, hermitian=True)
tensor([[2, 2, 2, 1],
        [1, 2, 2, 2]])

© 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.matrix_rank.html

Spec-Zone.ru

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