tensorflow变量错误:即使形状正常,形状错误

时间:2019-02-04 15:32:43

标签: python tensorflow deep-learning reinforcement-learning

嗨,我一直在尝试制作二十一点的RL程序。 我用Q网络制作了所有代码,并且可以正常工作。 但是我使用DQN的新代码有一个关于形状的错误。

X=tf.placeholder(shape=[1,state_number],dtype=tf.float32)
W1=tf.Variable(tf.random_uniform([state_number,128],0,0.01))#network for update
layer1=tf.nn.tanh(tf.matmul(X,W1))

这是一张图,下面是运行代码

Qs=sess.run(Qpred,feed_dict={X:one_hot(s)} 

我通过这段代码检查one_hot(s)的形状,结果在下面

print(np.shape(one_hot(s)))
(1, 600)

错误代码是这样的。

tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed 
a value for placeholder tensor 'Placeholder' with dtype float and shape [1,600]
 [[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[1,600], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
在Q网络代码中

起作用。 idk为什么它这次突然不起作用。 请帮我。谢谢

1 个答案:

答案 0 :(得分:0)

我从代码中假设变量state_number等于600。我还猜想从one_hot()函数返回的值是整数(这很常见)。 如果所有这些都成立,请尝试将one_hot()的输出强制转换为float32:

X = tf.placeholder(shape=[1,state_number],dtype=tf.float32)
W1 = tf.Variable(tf.random_uniform([state_number,128],0,0.01))#network for update
layer1 = tf.nn.tanh(tf.matmul(X,W1))

然后:

Qs = sess.run(Qpred,feed_dict={X:one_hot(s).astype(np.float32)} )