我正在玩this question的固定代码。我收到了上述错误。谷歌搜索表明它可能是某种尺寸不匹配,虽然我的诊断没有显示任何:
with tf.Session() as sess:
sess.run(init)
# Fit all training data
for epoch in range(training_epochs):
for (_x_, _y_) in getb(train_X, train_Y):
print("y data raw", _y_.shape )
_y_ = tf.reshape(_y_, [-1, 1])
print( "y data ", _y_.get_shape().as_list())
print("y place holder", yy.get_shape().as_list())
print("x data", _x_.shape )
print("x place holder", xx.get_shape().as_list() )
sess.run(optimizer, feed_dict={xx: _x_, yy: _y_})
观察尺寸,一切都很好:
y data raw (20,)
y data [20, 1]
y place holder [20, 1]
x data (20, 10)
x place holder [20, 10]
错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-131-00e0bdc140b2> in <module>()
16 print("x place holder", xx.get_shape().as_list() )
17
---> 18 sess.run(optimizer, feed_dict={xx: _x_, yy: _y_})
19
20 # # Display logs per epoch step
/usr/local/lib/python3.4/dist-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict)
355 e.args = (e.message,)
356 raise e
--> 357 np_val = np.array(subfeed_val, dtype=subfeed_t.dtype.as_numpy_dtype)
358 if subfeed_t.op.type == 'Placeholder':
359 if not subfeed_t.get_shape().is_compatible_with(np_val.shape):
ValueError: setting an array element with a sequence.
任何调试提示?
答案 0 :(得分:5)
当tf.Session.run()
的feed_dict
参数中的一个值是tf.Tensor
对象时(这种情况下,{{3的结果),会引发此错误 - 非常有用的错误}})。
feed_dict
中的值必须是numpy数组,或某些值x
,可以使用tf.reshape()
隐式转换为numpy数组。 tf.Tensor
个对象无法隐式转换,因为这样做可能需要大量工作:相反,您必须调用sess.run(t)
将张量t
转换为numpy阵列。
正如您在答案中注意到的那样,使用np.reshape(_y_, [-1, 1])
有效,因为它会产生一个numpy数组(因为_y_
是一个开头的numpy数组)。通常,您应该始终准备使用numpy和其他纯Python操作提供的数据。
答案 1 :(得分:0)
将tf
替换为普通numpy
改为 _y_ = np.reshape(_y_, [-1, 1])
帮助:
ORA
实际原因尚不清楚,但确实有效。