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
上的特征求解器。