Python 试图理解NumPy';s-linalg.norm方法
我不明白这段代码在做什么。X是一个矩阵,它的每一行都是图像的特征向量。规范是做什么的Python 试图理解NumPy';s-linalg.norm方法,python,image-processing,numpy,Python,Image Processing,Numpy,我不明白这段代码在做什么。X是一个矩阵,它的每一行都是图像的特征向量。规范是做什么的 # Take an eigenvector and make it into an image def vecToImage(x, size = lfw_imageSize): im = x/np.linalg.norm(x) im = im*(256./np.max(im)) im.resize(*size) return im 在这件事上情况很
# Take an eigenvector and make it into an image
def vecToImage(x, size = lfw_imageSize):
im = x/np.linalg.norm(x)
im = im*(256./np.max(im))
im.resize(*size)
return im
在这件事上情况很清楚。您将ord参数的None传递给linalg.norm(),因此得到Frobenius范数
代码似乎正在通过除以范数来规范化输入。然后,它似乎试图缩放为8位颜色值,但效果不佳。但是代码的范围是0到256,而不是0到255
然而,第一步对我来说似乎毫无意义。代码可以简单地读取:
im = x*(256./np.max(x))
但也许应该是255而不是256
因为这里没有上下文,所以我不愿意声明代码是错误的。只有你才能做出决定,因为只有你知道上下文。是的,但这里发生的直觉是什么。我不太懂弗罗贝尼乌斯·诺姆的数学……我对代码没有直觉。你从哪里弄来的?我不知道输入是什么。矩阵有特征向量,我不太确定图像作为矩阵有什么意义。我以为你想知道诺姆做了什么?诺姆做了什么?这个计算是为了什么?广义地说,标准是衡量一个物体有多大的尺度。Abs()是标量最常见的规范。对于向量,有L1、L2、Linfinity范数等等。最常见的是L2,即欧几里德范数。在代码中,使用norm是毫无意义的。