我想通过cupy.linalg.svd
一堆矩阵执行 SVD(奇异值分解),计算每个矩阵的 SVD。
import cupy as cp
arr = cp.random.uniform(size=(1000, 3, 3), dtype=cp.float32)
sing_vals = cp.linalg.svd(arr, compute_uv=False, full_matrices=False)
这给出了一个错误,声称arr
不是 2D。显然,cp.linalg.svd
只能计算单个二维矩阵的 SVD。但是,numpy.linalg.svd
总是在数组的最后两个轴上计算 SVD,这要强大得多。
有没有一种方法可以有效地计算 SVD 中的一堆矩阵cupy
?
更好的是,有没有一种有效的通用方法apply_along_axis
?