torch.svd_lowrank¶
- torch.svd_lowrank(A, q=6, niter=2, M=None)[source][source]¶
- Return the singular value decomposition - (U, S, V)of a matrix, batches of matrices, or a sparse matrix such that . In case is given, then SVD is computed for the matrix .- Note - The implementation is based on the Algorithm 5.1 from Halko et al., 2009. - Note - For an adequate approximation of a k-rank matrix , where k is not known in advance but could be estimated, the number of columns, q, can be choosen according to the following criteria: in general, . For large low-rank matrices, take . If k is relatively small compared to , choosing may be sufficient. - Note - This is a randomized method. To obtain repeatable results, set the seed for the pseudorandom number generator - Note - In general, use the full-rank SVD implementation - torch.linalg.svd()for dense matrices due to its 10x higher performance characteristics. The low-rank SVD will be useful for huge sparse matrices that- torch.linalg.svd()cannot handle.- Args::
- A (Tensor): the input tensor of size - 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
- , which will be broadcasted to the size of A in this function. 
 
- 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). 
 
 - Return type