私は、変数を含む単純な計算グラフを定義します。私は、変数の値を変更すると、それは、計算、グラフの出力に予想される影響力を持っている(予想ほど、すべてが、正常に動作します):計算グラフに入る前に変数に値を代入することは許されていますか?
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]})
私はこのコードを呼び出すときに私が取得:
Y1: [ 13. 23. 33.]
Y2: [ 12. 22. 32.]
Y1
とY2
の後の値は、異なる値のc
で計算されるため、期待どおりに異なります。
y
の計算にどのように関与するかを定義する前に、変数c
に値を割り当てると問題が発生します。この場合、私はc
の新しい値を割り当てることができません。私が手出力として
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]})
:
Y1: [ 14. 24. 34.]
Y2: [ 14. 24. 34.]
あなたが見ることができるように、私はy
を計算するたびに、私はc
の古い値を含む結果を得ることができます。何故ですか?