在 python 中设置 svd 算法的维度

set dimension of svd algorithm in python

svd公式: A ≈ UΣV* 我使用 numpy.linalg.svd 到 运行 svd 算法。 我想设置矩阵的维度。

例如:A=3*5维度,运行后numpy.linalg.svd,U=3*3维度,Σ=3*1维度,V*=5*5维度。

我需要设置特定维度,例如 U=3*64 维度、V*=64*5 维度。但似乎没有可选的尺寸参数可以在 numpy.linalg.svd.

中设置

如果A是一个3 x 5矩阵,那么它的秩最多为3。因此A的SVD最多包含3个奇异值。请注意,在上面的示例中,奇异值存储为向量而不是对角矩阵。简单地说,这意味着您可以在底部用零填充矩阵。由于完整的 S 矩阵在对角线上包含 3 个值,后面是其余的 0(在您的情况下,它将是 64x64,具有 3 个非零值),V 的底部行和 U 的右行根本不交互并且可以设置成任何你想要的。

请记住,这不再是 A 的 SVD,而是矩阵的压缩 SVD 增加了很多 0。