Ich habe zwei neuronale Netze, NN1 und NN2, innerhalb des gleichen Tensorflow Graphen. Ich muss die Gewichte von NN2 mit den Gewichten von NN1 aktualisieren. Dazu führe ich session.run([w1_nn2.assign(w1_nn1), w2_nn2.assign(w2_nn1), ...])
aus, wobei wi_nnj
die Gewichte sind. Werden all diese Zuweisungen als atomare Operation ausgeführt?Thread-sicheres Klonen von Netzwerkgewichten in Tensorflow?
Wenn das nicht der Fall ist (wie ich vermute), wäre das Aufrufen dieser Zuweisungen in einem Python-Thread beim Aufruf von apply_gradients()
auf NN1 in einem anderen Thread nicht sicher, oder? Was wäre also der einfachste Weg dies threadsicher zu tun?
Ich denke, ich kenne die Antwort auf meine eigene Frage. Da ich Python verwende und aufgrund der Funktionsweise von Multithreading in Python, werden die 'apply_gradients', die von einem Thread ausgeführt werden, niemals zur gleichen Zeit ausgeführt wie die Variablenzuweisung durch den anderen Thread, richtig? Das ist so, obwohl Tensorflow möglicherweise mehrere Threads startet, um die 'apply_gradients' und die Zuweisung auszuführen, da der Python-Code wartet, bis eine Tensorflow-Operation abgeschlossen ist, oder? – nicolas