크기가 각각 2 개 (162225, 10000)와 (10000, 100) 인 numpy 배열의 내적을 계산하려고합니다. 그러나 numpy.dot (A, B)를 호출하면 MemoryError가 발생합니다. 난 후, 내 구현을 작성하는 시도 :numpy.dot -> MemoryError, my_dot -> 매우 느리지 만 작동합니다. 왜?
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) 어떻게 문제를 회피/해결할 수 있습니까?
나는 16bit RAM이 장착 된 64bit 컴퓨터에 Python 3.4.2 (64bit)와 Numpy 1.9.1을 사용하고 있습니다.
파이썬을 64 비트 버전으로 실행하고 있습니까? – filmor
'np.einsum'을 시도해보십시오. 나는'np.dot'가 메모리 오류를 반환하거나 메모리 스와핑 (memory swapping)으로 다운되는 경우에 사용했습니다. – hpaulj
예, 64 비트 버전입니다. – marcotama