TensorFlow / Keras Multi-Gewinde-Modell passend

8

Ich versuche, mehrere keras -Modelle mit verschiedenen Parameterwerten unter Verwendung mehrerer Threads (und des tensorflow Backends) zu trainieren. Ich habe ein paar Beispiele für die Verwendung desselben Modells in mehreren Threads gesehen, aber in diesem speziellen Fall stoße ich auf verschiedene Fehler in Bezug auf widersprüchliche Graphen usw. Hier ist ein einfaches Beispiel für das, was ich gerne tun könnte:

%Vor%

Der resultierende Fehler ist ValueError: Tensor("Variable:0", shape=(5, 5), dtype=float32_ref) must be from the same graph as Tensor("Variable_2/read:0", shape=(), dtype=float32). . Ich habe auch versucht, die Modelle innerhalb der Threads zu initialisieren, was zu einem ähnlichen Fehler führt.

Irgendwelche Gedanken über den besten Weg, dies zu tun? Ich bin überhaupt nicht an diese genaue Struktur gebunden, aber ich würde lieber mehrere Threads als Prozesse verwenden können, damit alle Modelle innerhalb derselben GPU-Speicherzuweisung trainiert werden.

    
bnaul 19.02.2017, 01:35
quelle

1 Antwort

4

Tensorflow Graphs sind nicht threadsafe (siehe Ссылка ) und wenn Sie eine neue Tensorflow-Session erstellen, ist dies der Fall Standardmäßig wird das Standarddiagramm verwendet.

Sie können dies umgehen, indem Sie in Ihrer parallelisierten Funktion eine neue Sitzung mit einem neuen Diagramm erstellen und dort Ihr Keras-Modell erstellen.

Hier ist ein Code, der ein Modell auf jeder verfügbaren GPU parallel erzeugt und anpasst:

%Vor%     
dkamm 23.08.2017 15:24
quelle