如果你真的想要使用
tf.Variable
来实现这个,有两种方法。你可以将期望的表达式作为变量的初始化值。然后,在你初始化变量时,你会在
feed_dict
中传递
x
值。
import tensorflow as tf
x = tf.placeholder(tf.int32, (), name="x")
y = tf.Variable(2 * x ** 2 + 5, name="y")
with tf.Session() as sess:
for i in range(1,10):
sess.run(y.initializer, feed_dict={x: i})
print("Value of y for x =", i , "is:", sess.run(y))
或者,您可以使用
tf.assign
操作来执行相同的操作。在这种情况下,在运行赋值时传递
x
值。
import tensorflow as tf
x = tf.placeholder(tf.int32, name="x")
y = tf.Variable(0, name="y")
y_assigned = tf.assign(y, 2 * x** 2 + 5)
with tf.Graph().as_default(), tf.Session() as sess:
for i in range(1,10):
print("Value of y for x =", i , "is:", sess.run(y_assigned, feed_dict={x: i}))
然而,正如Nakor所指出的那样,如果y只是根据x的任何值计算出的结果,那么您可能不需要一个变量。变量的目的是保存在将来调用“run”时将维护的值。因此,只有当您想要根据x设置y的某个值,然后即使x更改(甚至如果x未提供),也要保持相同的值时,才需要它。