cupy.linalg.svd#
- cupy.linalg.svd(a, full_matrices=True, compute_uv=True)[source]#
奇异值分解。
将矩阵
a分解为u * np.diag(s) * v,其中u和v是酉矩阵,s是a的奇异值的一维数组。- 参数:
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 上,没有这种切换底层算法的快速代码路径。
另请参阅