torch.cholesky¶
- torch.cholesky(input, upper=False, *, out=None) Tensor ¶
計算對稱正定矩陣 的 Cholesky 分解,或對多批對稱正定矩陣進行 Cholesky 分解。
如果
upper
為True
,則回傳的矩陣U
為上三角矩陣,且分解形式為如果
upper
為False
,則回傳的矩陣L
為下三角矩陣,且分解形式為如果
upper
為True
,且 是一批對稱正定矩陣,則回傳的張量將由每個單獨矩陣的上三角 Cholesky 因子組成。 同樣地,當upper
為False
時,回傳的張量將由每個單獨矩陣的下三角 Cholesky 因子組成。警告
為了支持
torch.linalg.cholesky()
,torch.cholesky()
已棄用,將在未來版本的 PyTorch 中移除。L = torch.cholesky(A)
應被替換為L = torch.linalg.cholesky(A)
U = torch.cholesky(A, upper=True)
應被替換為U = torch.linalg.cholesky(A).mH
此轉換將對所有有效的(對稱正定)輸入產生等效的結果。
- 參數
- 關鍵字引數
out (Tensor, optional) – 輸出矩陣
範例
>>> a = torch.randn(3, 3) >>> a = a @ a.mT + 1e-3 # make symmetric positive-definite >>> l = torch.cholesky(a) >>> a tensor([[ 2.4112, -0.7486, 1.4551], [-0.7486, 1.3544, 0.1294], [ 1.4551, 0.1294, 1.6724]]) >>> l tensor([[ 1.5528, 0.0000, 0.0000], [-0.4821, 1.0592, 0.0000], [ 0.9371, 0.5487, 0.7023]]) >>> l @ l.mT tensor([[ 2.4112, -0.7486, 1.4551], [-0.7486, 1.3544, 0.1294], [ 1.4551, 0.1294, 1.6724]]) >>> a = torch.randn(3, 2, 2) # Example for batched input >>> a = a @ a.mT + 1e-03 # make symmetric positive-definite >>> l = torch.cholesky(a) >>> z = l @ l.mT >>> torch.dist(z, a) tensor(2.3842e-07)