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, spmatrixLinearOperator) – 维度为 (m, n) 的实数或复数数组。a 必须是 cupy.ndarraycupyx.scipy.sparse.spmatrixcupyx.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_vectorsTrue,则返回 usvt,其中 u 是左奇异向量,s 是奇异值,vt 是右奇异向量。否则,只返回 s

返回类型:

元组

注意

这是一个朴素的实现,使用 cupyx.scipy.sparse.linalg.eigsh 作为 a.H @ aa @ a.H 上的特征求解器。