Shortcuts

torch.svd_lowrank

torch.svd_lowrank(A: torch.Tensor, q: Optional[int] = 6, niter: Optional[int] = 2, M: Optional[torch.Tensor] = None) → Tuple[torch.Tensor, torch.Tensor, torch.Tensor][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 .

Note

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

Note

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

Note

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

Note

In general, use the full-rank SVD implementation torch.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.svd cannot handle.

Arguments::

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) .

References::
  • 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).

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources