torch.svd_lowrank(A, q=6, niter=2, M=None)[source]

Return the singular value decomposition (U, S, V) of a matrix, batches of matrices, or a sparse matrix AA such that AUdiag(S)VTA \approx U diag(S) V^T. In case MM is given, then SVD is computed for the matrix AMA - M.


The implementation is based on the Algorithm 5.1 from Halko et al, 2009.


To obtain repeatable results, reset the seed for the pseudorandom number generator


The input is assumed to be a low-rank matrix.


In general, use the full-rank SVD implementation torch.linalg.svd() for dense matrices due to its 10-fold higher performance characteristics. The low-rank SVD will be useful for huge sparse matrices that torch.linalg.svd() cannot handle.


A (Tensor): the input tensor of size (,m,n)(*, m, n)

q (int, optional): a slightly overestimated rank of A.

niter (int, optional): the number of subspace iterations to

conduct; niter must be a nonnegative integer, and defaults to 2

M (Tensor, optional): the input tensor’s mean of size

(,1,n)(*, 1, n).

  • Nathan Halko, Per-Gunnar Martinsson, and Joel Tropp, Finding structure with randomness: probabilistic algorithms for constructing approximate matrix decompositions, arXiv:0909.4061 [math.NA; math.PR], 2009 (available at arXiv).

Return type

Tuple[Tensor, Tensor, Tensor]


Access comprehensive developer documentation for PyTorch

View Docs


Get in-depth tutorials for beginners and advanced developers

View Tutorials


Find development resources and get your questions answered

View Resources