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 上,没有这种切换底层算法的快速代码路径。
另请参阅