" ValueError:使用序列设置数组元素。" TensorFlow

时间:2017-07-09 04:03:40

标签: python tensorflow

我试图探索一个简单的演示,但是遇到了这个错误。我怎么能修改我的代码?

import tensorflow as tf

sess = tf.Session()

x_ = tf.Variable([[-9,6,-2,3], [-4,3,-1,10]], dtype=tf.float32)
x = tf.placeholder(tf.float32, shape=[4,2])
y = tf.nn.relu(x)

sess.run(tf.global_variables_initializer())
print(sess.run(x_))
print(sess.run(y,feed_dict={x:x_}))

我得到的输出是:

[[ -9.   6.  -2.   3.]
 [ -4.   3.  -1.  10.]]

Traceback (most recent call last):
  File "C:\Users\jy\Documents\NetSarang\Xftp\Temporary\test.py", line 19, in <module>
    print(sess.run(y,feed_dict={x:x_}))
  File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 767, in run
    run_metadata_ptr)
  File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 938, in _run
    np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
  File "C:\Program Files\Anaconda3\lib\site-packages\numpy\core\numeric.py", line 482, in asarray
    return array(a, dtype, copy=False, order=order)
ValueError: setting an array element with a sequence.

1 个答案:

答案 0 :(得分:1)

首先,您的x_变量的维度错误:目前,它的形状为[2, 4],但您尝试在一个插槽中使用它期待形状[4, 2]的数据。

其次,tf.Variable意味着在你的神经网络模型中逐字表示一个变量(在数学意义上),在训练模型时进行调整 - 它是一种维护机制状态。

要提供训练模型的实际输入,您可以简单地传入常规Python数组(或numpy数组)。

这是您的代码的固定版本,似乎可以执行您想要的操作:

import tensorflow as tf

sess = tf.Session()

x = tf.placeholder(tf.float32, shape=[4,2])
y = tf.nn.relu(x)
sess.run(tf.global_variables_initializer())

x_ = [[-9, -4], [6, 3], [-2, -1], [3, 10]]
print(sess.run(y, feed_dict={x:x_}))

如果你确实希望神经网络中的一个节点开始使用这些值进行初始化,我将摆脱占位符并直接使用x_

import tensorflow as tf

sess = tf.Session()

x = tf.Variable([[-9, -4], [6, 3], [-2, -1], [3, 10]], dtype=tf.float32)
y = tf.nn.relu(x)
sess.run(tf.global_variables_initializer())

print(sess.run(y))

这可能不是你想要做的事情 - 让一个不接受任何输入的模型有点不寻常。