1

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か?

4

1 に答える 1