以下是经过GCN处理的CIFAR数据集代码:
产生以下输出:
xtx = np.dot(dataset.train_data[i].transpose(), dataset.train_data[i])
e, q = np.linalg.eigh(xtx)
print(np.max(e), np.min(e))
产生以下输出:
2.65138e+07 -0.00247511
考虑到xtx
是对称半正定的,这种情况不太一致。我猜可能是应用GCN的结果,但是最小特征值甚至与0相去甚远?
更新:因此,我的矩阵条件数为8.89952e+09。我之前忘记了取出平均值,现在最大特征值约为573,而最小特征值为-7.14630133e-08。我的问题是我正在尝试进行ZCA。在这种情况下,我该怎么办?向xtx
添加对角线扰动还是对特征值进行操作?
xtx
的数据类型是什么(检查xtx.dtype
)?它是单精度 (np.float32
) 吗? - Warren Weckessernumpy.linalg.cond(xtx)
的结果。 - gg349eigh
的工作方式。我对此表示怀疑,并尝试在LAPACK代码中快速查找,但没有成功。 - gg349