當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PyTorch matrix_rank用法及代碼示例


本文簡要介紹python語言中 torch.linalg.matrix_rank 的用法。

用法:

torch.linalg.matrix_rank(A, tol=None, hermitian=False, *, out=None) → Tensor

參數

  • A(Tensor) -形狀為 (*, m, n) 的張量,其中 * 是零個或多個批次維度。

  • tol(float,Tensor,可選的) -公差值。有關 None 時所需的值,請參見上文。默認值:None

  • hermitian(bool,可選的) -指示 A 如果是複數是 Hermitian,如果是實數是對稱的。默認值:False

關鍵字參數

out(Tensor,可選的) -輸出張量。如果 None 則忽略。默認值:None

計算矩陣的數值秩。

矩陣秩計算為大於指定 tol 閾值的奇異值(或在 hermitian = True 時為絕對值的特征值)的數量。

支持 float、double、cfloat 和 cdouble dtypes 的輸入。還支持批量矩陣,如果 A 是批量矩陣,則輸出具有相同的批量維度。

如果 hermitian = TrueA 假設是 Hermitian 如果複數或對稱如果實數,但內部不檢查。相反,在計算中僅使用矩陣的下三角部分。

如果未指定 tol 並且 A 是維度矩陣 (m, n) ,則公差設置為

其中 是最大奇異值(或 hermitian = True 時的絕對值特征值),而 A 的 dtype 的 epsilon 值(參見 torch.finfo )。如果 A 是一組矩陣,則 tol 以這種方式為批次的每個元素計算。

注意

如果 hermitian = False(默認),則使用奇異值分解 torch.linalg.svd() hermitian = True 時使用特征值分解 torch.linalg.eigvalsh() 計算矩陣秩。當輸入在 CUDA 設備上時,此函數將該設備與 CPU 同步。

例子:

>>> 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, tol=1.0)
tensor([[3, 2, 2, 2],
        [1, 2, 1, 2]])
>>> torch.linalg.matrix_rank(A, tol=1.0, hermitian=True)
tensor([[2, 2, 2, 1],
        [1, 2, 2, 2]])

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.linalg.matrix_rank。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。