本文簡要介紹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
設置為A
dtype 的機器精度。此函數在四個張量
(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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。