为什么 Scipy 稀疏实现 returns 奇异值的数量不正确,尽管密集的 returns 是正确的?
Why does Scipy sparse implementation returns incorrect number of singular values although dense one returns correct?
我正在尝试评估维度为 1401375、51 的数据集的奇异值分解。当我尝试使用 scipy.linalg.svd 时,它会给出正确数量的奇异值 (51) 和所有奇异值是正确的(我检查了 LAPACK)。但是,当我尝试使用 scipy.sparse.linalg.svds 时出现错误:
ValueError: k 必须介于 1 和 min(A.shape) 之间,k=51
_, sigma, _ = sp.sparse.linalg.svds(A_s, k=51, return_singular_vectors='vh',which='LM')
_, sigma, _ = sp.linalg.svd(A_D, full_matrices=False,
overwrite_a=True, check_finite=False,
compute_uv=True)
我希望稀疏版本有 return 51 个奇异值,但它失败了。当我将 k 的值降低到 50 时,它执行成功。
您可以在 scipy 的 scipy 文档中找到它,但是 k 必须是:1 <= k < min(A.shape) 所以如果您的形状是 1401375, 51那么最小值是 51 并且 k 必须小于不小于或等于
我正在尝试评估维度为 1401375、51 的数据集的奇异值分解。当我尝试使用 scipy.linalg.svd 时,它会给出正确数量的奇异值 (51) 和所有奇异值是正确的(我检查了 LAPACK)。但是,当我尝试使用 scipy.sparse.linalg.svds 时出现错误: ValueError: k 必须介于 1 和 min(A.shape) 之间,k=51
_, sigma, _ = sp.sparse.linalg.svds(A_s, k=51, return_singular_vectors='vh',which='LM')
_, sigma, _ = sp.linalg.svd(A_D, full_matrices=False,
overwrite_a=True, check_finite=False,
compute_uv=True)
我希望稀疏版本有 return 51 个奇异值,但它失败了。当我将 k 的值降低到 50 时,它执行成功。
您可以在 scipy 的 scipy 文档中找到它,但是 k 必须是:1 <= k < min(A.shape) 所以如果您的形状是 1401375, 51那么最小值是 51 并且 k 必须小于不小于或等于