本文簡要介紹python語言中 torch.linalg.lstsq 的用法。
- 用法:- torch.linalg.lstsq(A, B, rcond=None, *, driver=None)
- driver(str,可選的) -要使用的 LAPACK/MAGMA 方法的名稱。如果 - None,- ‘gelsy’用於 CPU 輸入,- ‘gels’用於 CUDA 輸入。默認值:- None。
- 命名元組 - (solution, residuals, rank, singular_values)。
- 計算線性方程組的最小二乘問題的解。 - 讓是或者, 這最小二乘問題對於線性係統和定義為 - 其中 表示 Frobenius 範數。 - 支持 float、double、cfloat 和 cdouble dtypes 的輸入。還支持矩陣批次,如果輸入是矩陣批次,則輸出具有相同的批次尺寸。 - driver選擇將使用的 LAPACK/MAGMA 函數。對於 CPU 輸入,有效值為- ‘gels’、- ‘gelsy’、- ‘gelsd、- ‘gelss’。對於 CUDA 輸入,唯一有效的驅動程序是- ‘gels’,它假定- A是滿秩的。要在 CPU 上選擇最佳驅動程序,請考慮:- 如果 - A條件良好(它的condition number 不是太大),或者您不介意一些精度損失。- 對於一般矩陣: - ‘gelsy’(帶旋轉的 QR)(默認)
- 如果 - A是滿秩:- ‘gels’(QR)
 
- 如果 - A條件不佳。- ‘gelsd’(三對角縮減和 SVD)
- 但是,如果您遇到內存問題: - ‘gelss’(完整的 SVD)。
 
 - 另見full description of these drivers - 當 - driver是(- ‘gelsy’、- ‘gelsd’、- ‘gelss’)之一時,- rcond用於確定- A中矩陣的有效秩。在這種情況下,如果 是- A的降序奇異值,如果 ,則 將向下舍入為零。如果- rcond- = None(默認),- rcond設置為- Adtype 的機器精度。- 此函數在四個張量 - (solution, residuals, rank, singular_values)的命名元組中返回問題的解決方案和一些額外信息。對於形狀為- (*, m, n)、- (*, m, k)的輸入- A、- B,它包含- solution:最小二乘解。它的形狀為- (*, n, k)。
- residuals:解的平方殘差,即 。它的形狀等於- A的批量尺寸。當- m > n和- A中的每個矩陣都是滿秩時計算它,否則它是一個空張量。如果- A是一批矩陣並且該批中的任何矩陣不是滿秩的,則返回一個空張量。此行為可能會在未來的PyTorch 版本中發生變化。
- rank:- A中矩陣的秩張量。它的形狀等於- A的批量尺寸。當- driver是(- ‘gelsy’、- ‘gelsd’、- ‘gelss’)之一時計算,否則為空張量。
- singular_values:- A中矩陣的奇異值的張量。它的形狀為- (*, min(m, n))。當- driver是 (- ‘gelsd’,- ‘gelss’) 之一時計算它,否則它是一個空張量。
 - 注意 - 此函數計算 - X =- A- .pinverse() @- B比單獨執行計算更快且數值更穩定。- 警告 - rcond的默認值可能會在未來的 PyTorch 版本中更改。因此,建議使用固定值以避免潛在的破壞性變化。- 例子:- >>> A = torch.tensor([[[10, 2, 3], [3, 10, 5], [5, 6, 12]]], dtype=torch.float) # shape (1, 3, 3) >>> B = torch.tensor([[[2, 5, 1], [3, 2, 1], [5, 1, 9]], [[4, 2, 9], [2, 0, 3], [2, 5, 3]]], dtype=torch.float) # shape (2, 3, 3) >>> X = torch.linalg.lstsq(A, B).solution # A is broadcasted to shape (2, 3, 3) >>> torch.dist(X, torch.linalg.pinv(A) @ B) tensor(2.0862e-07) >>> S = torch.linalg.lstsq(A, B, driver='gelsd').singular_values >>> torch.dist(S, torch.linalg.svdvals(A)) tensor(5.7220e-06) >>> A[:, 0].zero_() # Decrease the rank of A >>> rank = torch.linalg.lstsq(A, B).rank >>> rank tensor([2])
參數:
關鍵字參數:
返回:
相關用法
- Python PyTorch log2用法及代碼示例
- Python PyTorch lerp用法及代碼示例
- Python PyTorch logical_xor用法及代碼示例
- Python PyTorch load_state_dict_from_url用法及代碼示例
- Python PyTorch logical_and用法及代碼示例
- Python PyTorch lt用法及代碼示例
- Python PyTorch log_softmax用法及代碼示例
- Python PyTorch lgamma用法及代碼示例
- Python PyTorch logical_or用法及代碼示例
- Python PyTorch lazy_apply用法及代碼示例
- Python PyTorch logit用法及代碼示例
- Python PyTorch logical_not用法及代碼示例
- Python PyTorch ldexp用法及代碼示例
- Python PyTorch logcumsumexp用法及代碼示例
- Python PyTorch log10用法及代碼示例
- Python PyTorch logaddexp用法及代碼示例
- Python PyTorch logdet用法及代碼示例
- Python PyTorch load_sp_model用法及代碼示例
- Python PyTorch log用法及代碼示例
- Python PyTorch list用法及代碼示例
- Python PyTorch logsumexp用法及代碼示例
- Python PyTorch linspace用法及代碼示例
- Python PyTorch lu_solve用法及代碼示例
- Python PyTorch logspace用法及代碼示例
- Python PyTorch l1_unstructured用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.linalg.lstsq。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
