cupyx.scipy.sparse.linalg.svds#
- cupyx.scipy.sparse.linalg.svds(a, k=6, *, ncv=None, tol=0, which='LM', maxiter=None, return_singular_vectors=True)[source]#
为稀疏矩阵查找最大的
k个奇异值/向量。- 参数:
a (ndarray, spmatrix 或 LinearOperator) – 维度为
(m, n)的实数或复数数组。a必须是cupy.ndarray、cupyx.scipy.sparse.spmatrix或cupyx.scipy.sparse.linalg.LinearOperator。k (int) – 要计算的奇异值/向量数量。必须满足
1 <= k < min(m, n)。ncv (int) – 生成的 Lanczos 向量数量。必须满足
k + 1 < ncv < min(m, n)。如果为None,则使用默认值。tol (float) – 奇异值的容差。如果为
0,则使用机器精度。which (str) – 仅支持 ‘LM’。‘LM’:查找
k个最大的奇异值。maxiter (int) – Lanczos 更新迭代的最大次数。如果为
None,则使用默认值。return_singular_vectors (bool) – 如果为
True,则除了奇异值外,还返回奇异向量。
- 返回:
如果
return_singular_vectors为True,则返回u、s和vt,其中u是左奇异向量,s是奇异值,vt是右奇异向量。否则,只返回s。- 返回类型:
注意
这是一个朴素的实现,使用 cupyx.scipy.sparse.linalg.eigsh 作为
a.H @ a或a @ a.H上的特征求解器。