在 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。
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。