2015-12-27 9 views
12

Ich habe einen TensorFlow Berechnungsgraphen für einen Verlust tensor L, der auf 2 tf.Variables, A und B hängtHalten Variablen konstant während Optimierer

Ich mag würde gradient Aufstieg auf Variablen A ausgeführt (A + = Steigung von L gegen A), während B fest gehalten wird, und umgekehrt - läuft der Gradientenanstieg auf B (B + = Gradient von L gegen B), während A fest gehalten wird. Wie mache ich das?

Antwort

26

tf.stop_gradient(tensor) könnte das sein, was Sie suchen. Der Tensor wird als Konstante für Gradientenberechnungszwecke behandelt. Sie können zwei Verluste mit verschiedenen Teilen erzeugen, die als Konstanten behandelt werden.

Die andere Option (und oft besser) wäre, 2 Optimierer zu erstellen, aber nur Teilmengen von Variablen, z.

train_a = tf.train.GradientDescentOptimizer(0.1).minimize(loss_a, var_list=[A]) 
train_b = tf.train.GradientDescentOptimizer(0.1).minimize(loss_b, var_list=[B]) 

und Sie können zwischen ihnen auf den Updates iterieren.

+0

Danke - var_list sollte gut machen. Obwohl ich denke, es gibt einen Tippfehler - var_list sollte in die Argumente für minimize() statt GradientDescentOptimizer() gehen – ejang

+0

Vielen Dank, bearbeitet das Code-Snippet. –

Verwandte Themen