我试图对这幅图像进行奇异值分解:
取前10个值。我有以下代码:
from PIL import Image
import numpy as np
img = Image.open('bee.jpg')
img = np.mean(img, 2)
U,s,V = np.linalg.svd(img)
recon_img = U @ s[1:10] @ V
但当我运行它时,它会抛出以下错误:
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 9 is different from 819)
所以我觉得我在重建的时候做错了什么。我不确定np.linalg.svd(img)
创建的矩阵的维度。
我怎样才能解决这个问题
对不起,我说的是英语
问题是
s
的维度,如果打印U
、s
和V
维度,我会得到:所以
U
和V
是方矩阵,s
是一个数组。您必须创建一个矩阵,其尺寸与图像相同(819 x 1024),主对角线上有s
,如下所示:输出:
然后你可以继续你的阐述。要进行比较,请检查以下代码:
这给了我:
相关问题 更多 >
编程相关推荐