我想使用下面的代码计算一批特征向量的协方差矩阵(这里用 torch.randn 代替):
import torch
a = torch.randn(64, 512)
cov_mat = (a.T @ a) / (a.size(0) - 1)
生成的 cov_mat 是对称的半正定的。所以我通过添加
cov_mat = (cov_mat + cov_mat.T) / 2
来更改上面的子句
现在协方差矩阵是对称的,但仍然不是半正定的。我试过 torch.mm 但还是没用。跟精度有关系吗?
这里是具体版本:
蟒蛇3.7
PyTorch 1.8.1