webentwicklung-frage-antwort-db.com.de

Jupyter Notebook (nur) Speicherfehler, derselbe Code läuft in einem herkömmlichen .py und funktioniert

Ich habe eine Zuweisung für eine Deep Learning-Klasse, und sie stellen ein Jupyter-Notebook als Basiscode bereit. Nach dem Ausführen des Datenimports und der Umformung wird das Jupyter-Notebook durch einen "Speicherfehler" nach einer Analyse versucht, das zu kompilieren derselbe Code in einer normalen .py-Datei, und alles läuft gut.

Die Sache ist, dass ich (vorzugsweise) das Jupyter-Notebook als Basis für die Entwicklung verwenden muss, da es für die Art der Aufgabe interaktiver ist.

<ipython-input-2-846f80a40ce2> in <module>()
  2 # Load the raw CIFAR-10 data
  3 cifar10_dir = 'datasets\\'
----> 4 X, y = load_CIFAR10(cifar10_dir)

C:\path\data_utils.pyc in load_CIFAR10(ROOT)
     18     f = os.path.join(ROOT, 'cifar10_train.p')
     19     print('Path:  ' + f );
---> 20     Xtr, Ytr = load_CIFAR_batch(f)
     21     return Xtr, Ytr
     22 

C:\path\data_utils.pyc in load_CIFAR_batch(filename)
     10         X = np.array(datadict['data'])
     11         Y = np.array(datadict['labels'])
---> 12         X = X.reshape(-1, 3, 32, 32).transpose(0,2,3,1).astype("float")
     13         return X, Y
     14 

MemoryError: 

Der Fehler tritt in Zeile 12 auf, ich weiß, ist eine speicheraufwendige Zuweisung, aber das bedeutet nicht, dass 4 GB RAM nicht ausreichen werden. Dies wurde bestätigt, wenn der Code außerhalb von Jupyter ohne Probleme ausgeführt wurde.

Meine Vermutung ist, dass es etwas mit dem Speicherlimit zu tun hat, entweder von Jupyter oder von Chrome, aber ich bin nicht sicher und weiß auch nicht, wie ich es lösen soll.

Apropos:

  • Ich habe einen Windows 10-Laptop mit 4 GB RAM
  • und Chrome Version 57.0.2987.133 (64-Bit)
5
Daniel Ordoñez

Versuchen Sie, mit Administratorrechten zu arbeiten. Arbeitete für mich. 

1
Andriy Stolyar

Anscheinend geschieht dies, wenn die Python-Installation nicht die beste ist.

Tatsächlich hatte ich vor der Lösung des Problems unter Windows manuell Python 2.7 und die Pakete installiert, die ich brauchte. Nachdem ich fast zwei Tage versucht hatte, herauszufinden, was das Problem war, installierte ich alles mit Conda neu und das Problem wurde gelöst.

Ich denke, Conda installiert bessere Speicherverwaltungspakete, und das war der Hauptgrund.

1
Daniel Ordoñez

Ich bin nur ein Jahr und 2 Monate zu spät auf diese Frage. Die technische Antwort auf das Warum wird hier wirklich sehr schön erklärt: https://superuser.com/questions/372881/is-there-a-technical-reason-why-32-bit-windows-is-limited-to- 4 GB RAM

Dies bedeutet auch, warum die Conda-Lösung funktioniert.

Schließen Sie jedoch die unbeeinträchtigten Workarounds eines Lazy Engineers, indem Sie die Chrome-Registerkarten schließen und Ihren Kernel neu starten, damit er von vorne beginnt.

Kernel > Restart (& Run All)
0
Lefty G Balogh

Ähnliches passierte bei mir beim Laden der .npy-Datei. Durch die Freigabe von RAM wurde das Problem behoben. Es war nicht genügend Speicher vorhanden, um eine Datei in Variablen zu laden. Eigentlich liefen sowohl Firefox als auch Chrome auf meinem System und das Schließen von Firefox löste das Problem. 

Nützliche Befehle: free -h Hinweis zur Vorsicht: Bevor Sie diesen Befehl selbst interpretieren. Es wird dringend empfohlen, diese Seite durchzugehen: https://www.linuxatemyram.com/ .

0
Delsilon