4

を直交化しようとしました2d-numpy arrayが失敗しました。私はこのアプローチを使用し、それを次のコードに変換しました。

def sym(w):
    return w.dot((w.T.dot(w))**(-.5))

しかし

In [1]: a
Out[2]: 
array([[ 1.1,  0.1],
       [ 0.1,  1.1]])
In [3]: a = sym(a)

In [4]: a
Out[5]: 
array([[ 1.20909392,  2.43574363],
       [ 2.43574363,  1.20909392]])

In [6]: a.dot(a.T)
Out[7]: 
array([[ 7.39475513,  5.89008563],
       [ 5.89008563,  7.39475513]])

a.dot(a.T)IDを出力する必要があります。

4

1 に答える 1

7

の実用的な定義symは次のとおりです。

from scipy.linalg import sqrtm, inv

def sym(w):
    return w.dot(inv(sqrtm(w.T.dot(w))))

これは、numpy行列を-.5の累乗に上げることは、行列の平方根を取り、それを反転することと同じではないためです。これは、式に必要なことです。

于 2012-12-18T20:00:03.820 に答える