awjuliani / DeepRL-Agents

A set of Deep Reinforcement Learning Agents implemented in Tensorflow.
MIT License
2.23k stars 825 forks source link

DRQN: Error prefix tensor must be either a scalar or vector #46

Open ariewahyu opened 7 years ago

ariewahyu commented 7 years ago

I tried the DRQN for partial observations, but I got the error:

ValueError: prefix tensor must be either a scalar or vector, but saw tensor: Tensor("Placeholder_2:0", dtype=int32)

----Error happens in this line-------

self.state_in = rnn_cell.zero_state(self.batch_size, tf.float32)

ariewahyu commented 7 years ago

I found that there are 3 consecutive lines:

self.batch_size = tf.placeholder(dtype=tf.int32) self.convFlat = tf.reshape(slim.flatten(self.conv4),[self.batch_size,self.trainLength,h_size]) self.state_in = rnn_cell.zero_state(self.batch_size, tf.float32)

I change the line:

self.batch_size = tf.placeholder(dtype=tf.int32)

into:

self.batch_size = tf.placeholder(dtype=tf.int32,shape=[])

And it works.

tylerlekang commented 6 years ago

Thank you!!!! I thought for sure the code was doomed, per https://github.com/tensorflow/tensorflow/issues/10213

But this fix is correct and worked for me, too!

Really hope @awjuliani can fix in the code (modify literally one line), thank you sir!

awjuliani commented 6 years ago

Just made the change! Thanks for pointing this out.