【发布时间】:2014-12-27 15:02:40
【问题描述】:
我正在尝试计算两个大小分别为 (162225, 10000) 和 (10000, 100) 的 numpy 数组的点积。但是,如果我调用 numpy.dot(A, B) 会发生 MemoryError。 然后,我尝试编写我的实现:
def slower_dot (A, B):
"""Low-memory implementation of dot product"""
#Assuming A and B are of the right type and size
R = np.empty([A.shape[0], B.shape[1]])
for i in range(A.shape[0]):
for j in range(B.shape[1]):
R[i,j] = np.dot(A[i,:], B[:,j])
return R
它工作得很好,但当然很慢。关于 1)这种行为背后的原因是什么以及 2)我如何规避/解决问题的任何想法?
我在运行 Ubuntu 14.10 的 64 位计算机上使用 Python 3.4.2(64 位)和 Numpy 1.9.1。
【问题讨论】:
-
只是为了预先清除,您是否运行 64 位版本的 Python?
-
你可以试试
np.einsum。我在np.dot返回内存错误或因内存交换而陷入困境的情况下使用它。 -
是的,它是 64 位版本。