web-dev-qa-db-fra.com

Jupyter Notebook (only) Memory Error, le même code est exécuté dans un fichier .py classique et fonctionne

J'ai un devoir pour une classe d'apprentissage en profondeur, et ils fournissent un cahier Jupyter en tant que code de base, le fait est qu'après l'exécution de l'importation et du remodelage des données, le cahier jupyter via une "erreur de mémoire", après une analyse même code dans un fichier .py normal, et tout fonctionne bien.

Le fait est que je suis obligé (de préférence) d'utiliser le bloc-notes Jupyter comme base de développement, car il est plus interactif pour le type de tâche.

<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: 

L'erreur se produit dans la ligne 12, je sais que c'est une affectation consommant beaucoup de mémoire, mais cela ne signifie pas que 4 Go de RAM ne suffiront pas, et cela a été confirmé lorsque le code est exécuté sans problèmes en dehors de Jupyter.

À mon avis, cela a quelque chose à voir avec la limite de mémoire de Jupyter ou de Chrome, mais je ne suis pas sûr et je ne sais pas non plus comment le résoudre.

Au fait:

  • J'ai un ordinateur portable Windows 10 avec 4 Go de RAM
  • et Chrome Version 57.0.2987.133 (64 bits)
5
Daniel Ordoñez

Essayez de courir avec les privilèges d'administrateur. Travaillé pour moi 

1
Andriy Stolyar

Apparemment, cela se produit lorsque l'installation de Python n'est pas la meilleure.

En fait, avant de résoudre le problème, j’avais installé manuellement Windows python 2.7 et les paquetages dont j’avais besoin, après avoir essayé pendant presque deux jours de comprendre le problème, j’avais tout réinstallé avec Conda et le problème était résolu.

Je suppose que Conda installe de meilleurs progiciels de gestion de la mémoire et c’est la raison principale.

1
Daniel Ordoñez

Je n'ai qu'un an et 2 mois de retard sur cette question. La réponse technique quant à pourquoi est vraiment bien expliquée ici: https://superuser.com/questions/372881/is-there-a-technical-reason-why-32-bit-windows-is-limited-to- 4 Go de RAM

Cela implique également pourquoi la solution conda fonctionne.

Mais pour la solution de contournement sans changement d'un ingénieur fainéant, fermez les onglets de Chrome qui ne sont pas absolument nécessaires et redémarrez votre noyau pour qu'il recommence.

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

La même chose s’est produite avec moi lors du chargement du fichier .npy. Libérer RAM a résolu le problème. Il n'avait pas assez de mémoire pour charger le fichier dans les variables. En fait, Firefox et Chrome fonctionnaient tous les deux sur mon système et la fermeture de Firefox a résolu le problème. 

Commandes utiles: free -h Note de précaution: avant d'interpréter cette commande par vous-même. Il est fortement recommandé de passer par cette page: https://www.linuxatemyram.com/ .

0
Delsilon