为了训练神经网络,在某些时候我有一个巨大的 212,243 × 2500 密集矩阵 phi
,以及向量 y
(212243) 和 w
(2500),存储为 numpy
double 组。我要计算的是
w = dot(pinv(phi), y)
# serialize w...
r = dot(w, transpose(phi))
# serialize r...
我的机器在 Ubuntu x64 上有 6 GB 的 RAM 和 16 GB 的交换空间。我开始计算两次,两次在大约一个小时的工作后以系统(不是 python)交换错误结束。
有没有办法在我的计算机上执行此计算?不需要用 python 来完成。
最佳答案
如果除了计算 w
之外不需要伪逆,请将该行替换为:
w = np.linalg.lstsq(phi, y)[0]
在我的系统上,它的运行速度提高了大约 2 倍,并且使用了大约一半的中间存储空间。
关于python - 在 numpy 中对巨大的密集矩阵进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470123/