tenorflow Ошибка переменной: ошибка формы, хотя форма в порядке - PullRequest
0 голосов
/ 04 февраля 2019

привет, я пытался создать 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-сети, он работает.Почему это вдруг не работает на этот раз.Пожалуйста, помогите мне.спасибо

1 Ответ

0 голосов
/ 04 февраля 2019

Я предполагаю из кода, что переменная 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)} )
...