2017-09-02 93 views
0

我试图在依赖于x的张量流中分配变量y。但是,即使更改x的值,y也不会改变。当输入参数发生变化时,tf变量不会改变数值

import tensorflow as tf 

sess = tf.Session() 
x=tf.Variable(4,name='x') 

model = tf.global_variables_initializer() 

sess.run(model) 
y=tf.Variable(2*x,name='y') 

model = tf.global_variables_initializer() 
sess.run(model) 

sess.run(x) 
sess.run(tf.assign(x,2)) 
print(sess.run(y)) 

我期待的输出4,但我越来越8。任何帮助,将不胜感激。

格拉梅西...

回答

1

y=tf.Variable(2*x, name='y')只是意味着y通过x*2初始化,改变这一行成y = 2 * x如你预期会做。

+0

酷!它工作:)但是,当我们运行'sess.run'时不会将值赋给变量?当'x'的值被改变时,我在最后一行做了这个。 – americast

+1

'y = tf.Variable(2 * x,name ='y')''y'和'x'之间的关系只是'y'需要来自'x'的初始值,但在'y '集合。 'y = 2 * x'表示'y'的值依赖于'x',当'x'改变时它会改变。如果我让我清楚,upvote和批准这个答案将不胜感激。 –

+0

是的! 那么,根据文档,我看到'tf.Variable'被定义为第一个参数提供初始值的方式。但是我猜想调用'sess.run'时变量被赋值的事实有点令人误解,不是吗?而且,在'y'被分配前'x'的值已经改变了,所以我消化有点困难。 :) – americast

相关问题