torch.cholesky¶
-
torch.
cholesky
(input, upper=False, *, out=None) → Tensor¶ Computes the Cholesky decomposition of a symmetric positive-definite matrix or for batches of symmetric positive-definite matrices.
If
upper
isTrue
, the returned matrixU
is upper-triangular, and the decomposition has the form:If
upper
isFalse
, the returned matrixL
is lower-triangular, and the decomposition has the form:If
upper
isTrue
, and is a batch of symmetric positive-definite matrices, then the returned tensor will be composed of upper-triangular Cholesky factors of each of the individual matrices. Similarly, whenupper
isFalse
, the returned tensor will be composed of lower-triangular Cholesky factors of each of the individual matrices.Note
torch.linalg.cholesky()
should be used overtorch.cholesky
when possible. Note however thattorch.linalg.cholesky()
does not yet support theupper
parameter and instead always returns the lower triangular matrix.- Parameters
- Keyword Arguments
out (Tensor, optional) – the output matrix
Example:
>>> 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)