torch.cholesky¶
- torch.cholesky(input, upper=False, *, out=None) 张量 ¶
计算对称正定矩阵 的 Cholesky 分解,或对一批对称正定矩阵进行 Cholesky 分解。
如果
upper
是True
,则返回的矩阵U
是上三角矩阵,并且分解的形式为:如果
upper
是False
,则返回的矩阵L
是下三角矩阵,并且分解的形式为:如果
upper
是True
,并且 是一批对称正定矩阵,那么返回的张量将由每个单独矩阵的上三角Cholesky因子组成。同样,当upper
是False
时,返回的张量将由每个单独矩阵的下三角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).mH
此转换将对所有有效的(对称正定)输入产生等效结果。
- Parameters
- Keyword Arguments
输出 (张量, 可选) – 输出矩阵
示例:
>>> a = torch.randn(3, 3) >>> a = a @ a.mT + 1e-3 # 使对称正定 >>> 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) # 批量输入的示例 >>> a = a @ a.mT + 1e-03 # 使对称正定 >>> l = torch.cholesky(a) >>> z = l @ l.mT >>> torch.dist(z, a) tensor(2.3842e-07)