Ich habe kürzlich an einem Projekt gearbeitet, das ein neuronales Netzwerk für die virtuelle Robotersteuerung verwendet. Ich habe Tensorflow verwendet, um es zu codieren und es läuft reibungslos. Bisher habe ich sequenzielle Simulationen verwendet, um zu bewerten, wie gut das neuronale Netzwerk ist, jedoch möchte ich mehrere Simulationen parallel ausführen, um die Zeit zu reduzieren, die benötigt wird, um Daten zu erhalten.Tensorflow und Multiprocessing: Passing Sessions
Dazu importiere ich Pythons multiprocessing
Paket. Anfangs übergab ich die Variable sess (sess=tf.Session()
) an eine Funktion, die die Simulation ausführen würde. Sobald ich jedoch zu einer Anweisung komme, die diese Variable sess
verwendet, wird der Prozess ohne Warnung beendet. Nach der Suche nach einem bisschen um, fand ich diese beiden Beiträge: Tensorflow: Passing a session to a python multiprocess und Running multiple tensorflow sessions concurrently
Während sie sehr verwandt sind habe ich nicht in der Lage gewesen, um herauszufinden, wie es funktioniert. Ich habe versucht, für jeden einzelnen Prozess eine Sitzung zu erstellen und die Gewichte des neuronalen Netzes seinen trainierbaren Parametern ohne Erfolg zuzuweisen. Ich habe auch versucht, die Sitzung in eine Datei zu speichern und dann innerhalb eines Prozesses zu laden, aber auch kein Glück.
Kann jemand eine Sitzung (oder Klone von Sitzungen) an mehrere Prozesse übergeben?
Danke.
Ich vermute, dass Sie Klone von Sitzungen nicht zwischen Prozessen übergeben können, da es einen Status im C-Adressraum gibt, den Python nicht kopieren kann. Es sollte jedoch funktionieren, neue Sitzungen in jedem neuen Prozess zu erstellen. Ich habe kein Multiprocessing verwendet, aber ich habe oft mehrere Prozesse parallel geöffnet, die ihre eigenen TensorFlow-Sitzungen behalten –
Die zweite Verbindung, die ich zur Verfügung gestellt habe, führt mehrere Prozesse parallel, aber das Problem ist, dass ich das neurale Netzwerk für das gleiche brauche ALLE Prozesse. – MrRed
Sie können es umgehen, indem Sie TensorFlow verteilt verwenden - dh, Sie haben einen lokalen Arbeiter und ps und erstellen mehrere Sitzungen parallel wie 'tf.Session (" grpc: // localhost: 2222 ")' https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/how_tos/distributed/index.md –