Ich definiere ein einfaches Rechendiagramm mit einer Variablen. Wenn ich einen Wert der Variablen ändern hat es einen erwarteten Einfluss auf den Ausgang des Berechnungsgraphen (so, alles funktioniert gut, wie erwartet):Ist es erlaubt, einer Variablen einen Wert zuzuordnen, bevor sie in ein Berechnungsdiagramm eintritt?
s = tf.Session()
x = tf.placeholder(tf.float32)
c = tf.Variable([1.0, 1.0, 1.0], tf.float32)
y = x + c
c = tf.assign(c, [3.0, 3.0, 3.0])
s.run(c)
print 'Y1:', s.run(y, {x : [10.0, 20.0, 30.0]})
c = tf.assign(c, [2.0, 2.0, 2.0])
s.run(c)
print 'Y2:', s.run(y, {x : [10.0, 20.0, 30.0]})
Wenn ich diesen Code aufrufen, erhalte ich:
Y1: [ 13. 23. 33.]
Y2: [ 12. 22. 32.]
Also, die Werte nach Y1
und Y2
sind anders als erwartet, weil sie mit unterschiedlichen Werten von c
berechnet werden.
Die Probleme starten, wenn ich der Variablen c
einen Wert zuweisen, bevor ich definiere, wie es in die Berechnung von y
involviert ist. In diesem Fall kann ich keinen neuen Wert von c
zuweisen.
s = tf.Session()
x = tf.placeholder(tf.float32)
c = tf.Variable([1.0, 1.0, 1.0], tf.float32)
c = tf.assign(c, [4.0, 4.0, 4.0]) # this is the line that causes problems
y = x + c
c = tf.assign(c, [3.0, 3.0, 3.0])
s.run(c)
print 'Y1:', s.run(y, {x : [10.0, 20.0, 30.0]})
c = tf.assign(c, [2.0, 2.0, 2.0])
s.run(c)
print 'Y2:', s.run(y, {x : [10.0, 20.0, 30.0]})
Als Ausgabe erhalte ich:
Y1: [ 14. 24. 34.]
Y2: [ 14. 24. 34.]
Wie Sie sehen können, jedes Mal, wenn ich berechnen y
, ich Ergebnisse zu erhalten, die alten Werte von c
beteiligt sind. Warum das?