TensorFlow中的变量分配给出错误

时间:2018-08-20 22:03:55

标签: tensorflow

如果我有一个占位符:

placeholder = tf.placeholder(dtype=np.float32, shape=[1, 2])

然后创建一个op,将占位符分配给新变量y

y = tf.Variable([[0, 0]], dtype=tf.float32)
y_op = tf.assign(y, placeholder)

然后指定一个要输入到该占位符的值:

x = tf.Variable([[5, 5]], dtype=np.float32)

最后运行操作:

sess = tf.Session()
sess.run(tf.global_variables_initializer())
sess.run(y_op, feed_dict={placeholder: x})

我收到以下错误:

ValueError: setting an array element with a sequence.

这是为什么?据我所知,placeholderyx的形状都是[1, 2]

1 个答案:

答案 0 :(得分:2)

您正在尝试使用feed dict来提供图形变量。 Feed dict和占位符用于将外部值输入到图形中。这段代码有效:

placeholder = tf.placeholder(dtype=np.float32, shape=[1, 2])
y = tf.Variable([[0, 0]], dtype=tf.float32)
y_op = tf.assign(y, placeholder)

value = np.array([[5,5]])

sess = tf.Session()
sess.run(tf.global_variables_initializer())
r = sess.run(y_op, feed_dict={placeholder: value})

但是,如果要在图形中使用的值已经是tf.Variable,则完全没有理由使用feed dict。这也可以:

x = tf.Variable([[5, 5]], dtype=tf.float32)
y = tf.Variable([[0, 0]], dtype=tf.float32)
y_op = tf.assign(y, x)

sess = tf.Session()
sess.run(tf.global_variables_initializer())
r = sess.run(y_op)