torch.linalg.matrix_rank
-
torch.linalg.matrix_rank(A, *, atol=None, rtol=None, hermitian=False, out=None) → Tensor[исходный код] -
Вычисляет численный ранг матрицы.
Ранг матрицы вычисляется как количество сингулярных значений (или собственных значений по абсолютной величине, если
hermitian= True), которые больше порогового значения , где — наибольшее сингулярное значение (или собственное значение).Поддерживаются входные данные с типами float, double, cfloat и cdouble. Также поддерживаются пакеты матриц; если
Aпредставляет собой пакет матриц, выходные данные имеют те же пакетные размерности.Если
hermitian= True, предполагается, чтоAявляется эрмитовой, если она комплексная, или симметричной, если она вещественная; эта характеристика не проверяется внутри функции. Вместо этого при вычислениях используется только нижняя треугольная часть матрицы.Если
rtolне задано иA— матрица размерности(m, n), относительный допуск задаётся равным , а — значение эпсилон для типа данных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.- Параметры:
- Именованные аргументы:
-
-
atol (float, Tensor, необязательный) – абсолютный допуск. Если
None, считается равным нулю. Значение по умолчанию:None. -
rtol (float, Tensor, необязательный) – относительный допуск. См. выше значение, которое он принимает, если
None. Значение по умолчанию:None. -
hermitian (bool) – указывает, является ли
Aэрмитовой для комплексных данных или симметричной для вещественных. Значение по умолчанию:False. -
out (Tensor, необязательный) – выходной тензор. Игнорируется, если
None. Значение по умолчанию:None.
-
atol (float, Tensor, необязательный) – абсолютный допуск. Если
Примеры:
>>> 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