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


Python PyTorch cholesky用法及代碼示例


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

用法:

torch.cholesky(input, upper=False, *, out=None) → Tensor

參數

  • input(Tensor) -大小為 的輸入張量 其中 * 是零個或多個由對稱正定矩陣組成的批量維度。

  • upper(bool,可選的) -指示是返回上三角矩陣還是下三角矩陣的標誌。默認值:False

關鍵字參數

out(Tensor,可選的) -輸出矩陣

計算對稱正定矩陣 或對稱正定矩陣批次的 Cholesky 分解。

如果 upperTrue ,則返回的矩陣 U 是上三角矩陣,並且分解具有以下形式:

如果 upperFalse ,則返回的矩陣 L 是下三角矩陣,並且分解具有以下形式:

如果 upperTrue ,並且 是一批對稱正定矩陣,則返回的張量將由每個單獨矩陣的上三角 Cholesky 因子組成。同樣,當 upperFalse 時,返回的張量將由每個單獨矩陣的下三角 Cholesky 因子組成。

警告

torch.cholesky() 已棄用,取而代之的是 torch.linalg.cholesky() ,並將在未來的 PyTorch 版本中刪除。

L = torch.cholesky(A) 應替換為

L = torch.linalg.cholesky(A)

U = torch.cholesky(A, upper=True) 應替換為

U = torch.linalg.cholesky(A).transpose(-2, -1).conj()

此變換將為所有有效(對稱正定)輸入產生等效結果。

例子:

>>> a = torch.randn(3, 3)
>>> a = torch.mm(a, a.t()) # 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]])
>>> torch.mm(l, l.t())
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)
>>> a = torch.matmul(a, a.transpose(-1, -2)) + 1e-03 # make symmetric positive-definite
>>> l = torch.cholesky(a)
>>> z = torch.matmul(l, l.transpose(-1, -2))
>>> torch.max(torch.abs(z - a)) # Max non-zero
tensor(2.3842e-07)

相關用法


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