如果我有一个占位符:
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.
这是为什么?据我所知,placeholder
,y
和x
的形状都是[1, 2]
。
答案 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)