【发布时间】:2017-02-17 01:31:36
【问题描述】:
作为我正在进行的项目的一部分,我需要计算2m 向量之间的均方误差。
基本上我有两个矩阵x 和xhat,大小都是m by n,我感兴趣的向量是这些向量的行。
我用这段代码计算 MSE
def cost(x, xhat): #mean squared error between x the data and xhat the output of the machine
return (1.0/(2 * m)) * np.trace(np.dot(x-xhat,(x-xhat).T))
它工作正常,这个公式是正确的。
问题是在我的具体情况下,我的m 和n 非常大。具体来说,m = 60000 和 n = 785。所以当我运行我的代码并进入这个函数时,我得到一个内存错误。
有没有更好的方法来计算 MSE?我宁愿避免使用 for 循环,而且我非常倾向于矩阵乘法,但矩阵乘法在这里似乎非常浪费。也许我不知道 numpy 中的某些东西?
【问题讨论】:
-
你可以试试这里推荐的方法:stackoverflow.com/questions/16774849/…
-
点两个数组然后只使用trace是不可能的浪费
标签: python numpy math memory matrix