我正在运行以下代码:
import tensorflow as tf
sess = tf.InteractiveSession()
y = tf.Variable(initial_value=[1,2])
sess.run(y, feed_dict={y: [100,2]})
给出: [100,2]
然而,在那之后:
sess.run(y)
给出y的原始值:[1,2]。
为什么不是:
sess.run(y, feed_dict={y: [100,2]})
更新y的值,并将其保存?
答案 0 :(得分:2)
因为feed_dict
会覆盖字典键的值。
声明:
sess.run(y, feed_dict={y: [100,2]})
您告诉tensorflow将y
的值替换为当前计算的[100, 2]
。这不是作业。
因此,下次通话
sess.run(y)
获取原始变量并使用它。
如果要为变量赋值,则必须使用tf.assing
答案 1 :(得分:1)
如果要使用Feed字典,请初始化占位符而不是变量并定义输出。
作为示例(与您的问题代码的风格相同),
import tensorflow as tf
import numpy as np
sess = tf.InteractiveSession()
inputs = tf.placeholder(tf.int32, shape = (2,2))
output = tf.matmul(inputs, tf.transpose(inputs))
test_input = np.array([[10,2], [4,4]])
print test_input.shape
# (2,2)
sess.run(output, feed_dict = {inputs : test_input})
# array([[104, 48], [48, 32]], dtype=int32)
如果您只想将变量的值更改为nessuno的答案。