2016-10-03 2 views
0

Ich habe eine Kosten, die von zwei Variablen a und b abhängt.
Ich möchte:Tensorflow control_dependencies arbeitet nicht mit Liste

  1. berechnen beide Verläufe der Kosten am aktuellen Punkt,
  2. Aktualisierung der Verlust w.r.t. die erste Liste der Variablen (a)
  3. Update der Verlust w.r.t. die zweite Liste der Variablen (b).

In dieser Reihenfolge.

Um dies zu tun, habe ich versucht, so etwas wie dieses:

EDIT: Nach @Yaroslav Bulatovs Antwort ich folgendes versucht:

opt=tf.train.GradientDescentOptimizer(0.001) 
grad_cost_wrt_a=opt.compute_gradients(cost,[a]) 
grad_cost_wrt_b=opt.compute_gradients(cost,[b]) 

with tf.control_dependencies(grad_cost_wrt_a[0]): 
    with tf.control_dependencies(grad_cost_wrt_b[0]): 
    update_wrt_a=opt.apply_gradients(grad_cost_wrt_a) 
     with tf.control_dependencies([update_wrt_a]): 
     update_wrt_b=opt.apply_gradients(grad_cost_wrt_b) 

fragen sich, ob dies das Richtige tut? Wenn a und b eine Liste von Variablen sind.

der Lage sein, dann tun: Zuerst

sess.run([update_wrt_a,update_wrt_b],feed_dict={x: x_input, y: y_input}) 

das ich nicht funktioniert: eine Liste in einen Tensor oder Betrieb nicht konvertieren kann, aber control_dependencies soll eine Liste von Tensoren ... empfangen

Dann Bonus Frage brauche ich wirklich all diese control_dependencies?

Antwort

1

Ihre grad_cost_wrt_a und grad_cost_wrt_b Variablen sind Listen, so etwas wie grad_cost_wrt_a[0], grad_cost_wrt_b[0]

+0

bekannt haben sollte! Entschuldigung, ich habe es verpasst! Vielen Dank ! – jean

+0

Wie geht man eigentlich mit dem Fall um, wo a und b eine Liste von Variablen sind? – jean

+0

Ich habe meine Frage bearbeitet? Wenn ich nur eine Steuerabhängigkeit von den ersten Gradienten verwende, funktioniert das Variablentupel so, wie ich es möchte? – jean

Verwandte Themen