cupy.linalg.svd#

cupy.linalg.svd(a, full_matrices=True, compute_uv=True)[source]#

奇异值分解。

将矩阵 a 分解为 u * np.diag(s) * v,其中 uv 是酉矩阵,sa 的奇异值的一维数组。

参数:
  • a (cupy.ndarray) – 输入矩阵,维度为 (..., M, N)

  • full_matrices (bool) – 如果为 True,返回的 u 和 v 的维度分别为 (..., M, M)(..., N, N)。否则,u 和 v 的维度分别为 (..., M, K)(..., K, N),其中 K = min(M, N)

  • compute_uv (bool) – 如果为 False,则只返回奇异值。

返回值:

一个包含 (u, s, v) 的元组,满足 a = u * np.diag(s) * v

返回类型:

tuple of cupy.ndarray

警告

此函数调用一个或多个 cuSOLVER 例程,如果输入条件不满足,可能会产生无效结果。要检测这些无效结果,您可以在 cupyx.errstate()cupyx.seterr() 中将 linalg 配置设置为非 ignore 的值。

注意

在 CUDA 上,当 a.ndim > 2 且矩阵维度 <= 32 时,会采用基于雅可比方法(gesvdj)的快速代码路径。否则,使用 QR 方法(gesvd)。

在 ROCm 上,没有这种切换底层算法的快速代码路径。

另请参阅

numpy.linalg.svd()