torch.cholesky¶
- torch.cholesky(input, upper=False, *, out=None) Tensor ¶
计算对称正定矩阵 或对称正定矩阵批次的 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
此转换将为所有有效(对称正定)输入生成等效结果。
- 参数
- 关键字参数
out (Tensor, 可选) – 输出矩阵
示例
>>> 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)