Ich habe eine Wrapperklasse erstellt, die ein keras.models.Sequential
Modell initialisiert und eine Reihe von Methoden zum Starten des Trainingsprozesses und Überwachen des Fortschritts bietet. Ich instanziiere diese Klasse in meiner main
Datei und führe den Trainingsprozess durch. Ziemlich banale Sachen.Wie kann man den Speicher während der Verwendung von Keras mit Tensorflow-Backend steuern?
Meine Frage ist:
Wie alle GPU-Speicher von tensorflow
zugewiesen zu befreien. Ich habe versucht, die folgenden ohne Glück:
import keras.backend.tensorflow_backend as K
with K.get_session() as sess:
K.set_session(sess)
import tensorflow as tf
from neural_net import NeuralNet
with tf.device('/gpu:0'):
nn = NeuralNet('config', train_db_path, test_db_path)
nn.train(1000, 1)
print 'Done'
K._SESSION.close()
K.set_session(None)
Auch nach der Sitzung wurde geschlossen und zurückgesetzt None
, hat nvidia-smi
keine Verringerung der Speichernutzung widerspiegeln. Irgendwelche Ideen?
Idee
Wäre es sinnvoll sein, eine __exit__
Methode meiner NeuralNet
Klasse hinzuzufügen und instanziiert es als:
with NeuralNet() as nn:
nn.train(1000, 1)
Wie soll ich bei diesem Verfahren der Ressourcen des keras Modells zu ?
Testumgebung
ich auf einem Ubuntu 14.04 mit 3 GTX 960 GPUs ipython Notebook bin mit.
Referenz:
- https://github.com/fchollet/keras/issues/2102
- https://groups.google.com/forum/#!topic/keras-users/MFUEY9P1sc8
fragte sich, ob Sie eine Lösung für dieses Problem gefunden haben! Ich kann nicht scheinen, einen Weg zu finden, um Tensorflow zu haben (über Keras) den Speicher freizugeben, ohne den python Prozess zu verlassen –
Nein. Von Keras weggezogen. Verwenden Sie nur Tensorflow mit Grafiken und Sitzungen. – Chintak
Haben Sie versucht, K.clear_session() – 0xF