4

为了训练神经网络,有时我有一个巨大的 212,243 × 2500 密集矩阵phi和向量y(212243) 和w(2500),它们存储为numpy双精度数组。我要计算的是

w = dot(pinv(phi), y)
# serialize w...
r = dot(w, transpose(phi))
# serialize r...

我的机器在 Ubuntu x64 上有 6 GB 的 RAM 和 16 GB 的交换空间。我开始计算两次,两次它在大约一个小时的工作后以系统(不是 python)交换错误结束。

有没有办法在我的电脑上执行这个计算?它不需要用python来完成。

4

2 回答 2

3

如果除了计算之外不需要伪逆,请w将该行替换为:

w = np.linalg.lstsq(phi, y)[0]

在我的系统上,它的运行速度提高了大约 2 倍,并且使用了大约一半的中间存储空间。

于 2013-05-09T22:43:05.450 回答
0

Let's see:

212,243 row values * 2500 col values * 8 bytes/value = 4,244,860,000 bytes = 4GB

That's how much memory you need to hold the whole matrix in memory.

If this were Java, I'd recommend that you bump up the max heap on your JVM. I don't know what the analogy for Python is.

于 2013-05-09T20:09:12.177 回答