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
単一の 2D 行列の SVD しか計算できません。ただし、numpy.linalg.svd
はるかに強力な配列の最後の 2 つの軸に対して常に SVD を計算します。
の行列のスタックに対して SVD を効率的に計算する方法はありcupy
ますか?
さらに良いことに、効率的な一般的な方法はありますapply_along_axis
か?