2016-07-28 8 views
0

Ich habe zwei Matrizen als numpy Arrays:Wie Speicherfehler zu vermeiden, wenn große Kovarianz und Identitäts-Matrizen mit numpy Berechnung

A.shape 
(800, 1200) 
B.shape 
(800, 101343) 

Ich brauche die Kovarianzmatrix A und B und die Identitätsmatrix zu berechnen, der A und B:

import numpy as np 
a_row, a_col = A.shape 
b_row, b_col = B.shape 
C_ab = np.cov(A,B, rowvar=False)[:a_col, a_col:] 
ai = np.eye(a_col) 
bi = np.eye(b_col) 

Das hier Problem ist aber, dass ich bekommen:

2493  else: 
    2494   X_T = (X*w).T 
-> 2495  c = dot(X, X_T.conj()) 
    2496  c *= 1./np.float64(fact) 
    2497  return c.squeeze() 

MemoryError: 

Aufgrund der Größe von 012.. Wer kennt eine Arbeit?

Antwort

0

GraphLab create hat eine eigene Implementierung von Numpy, die Sie installieren können, die alle Berechnungen auf der Festplatte durchführt, siehe: https://turi.com/learn/gallery/notebooks/linear_regression_benchmark.html. Insbesondere haben sie einen Befehl:

import numpy as np 
import graphlab.numpy 

die Ergebnisse:

Scalable Numpy Activation Successful 

Danach Numpy Lage sein sollten, Ihre Matrix zu behandeln.

+0

Wenn ich es geschafft habe, es zu testen, akzeptiere ich die Antwort, so wie es aussieht, jeder Versuch, numpy nach 'import graphlab.numpy' zu verwenden, führt zu einem' Zugriff auf ungültige Adresse: 0xffffffffffffffff Abgebrochen 'in ipython und' Zugriff auf ungültige Adresse: 0xffffffffffffffff Kernel starb, neu starten ([y]/n)? 'In Jupyter-Konsole – atomsmasher

+0

Mine funktioniert gut. Benutzt du Python2? – user1157751

+0

@atomsmasher Das könnte ein Ärgernis sein, aber ich schlage vor, dass Sie Ihren Python 2 auf den neuesten 2.7.10 aktualisieren. Es sieht so aus, als ob Python versucht hat, auf einen Speicherort zuzugreifen, den es nicht sollte. – user1157751