2017-07-07 57 views
1

看見在以下this tutorial,我收到以下錯誤:DRQN - 前綴張量必須是一個標量或矢量,但張量

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

誤差從這些線來源:

# Take the output from the final convolutional layer and send it to a recurrent layer 
# The input must be reshaped into [batch x trace x units] for rnn processing, and then returned to 
# [batch x units] when sent through the upper levels 
self.batch_size = tf.placeholder(dtype=tf.int32) 
self.convFlat = tf.reshape(slim.flatten(self.conv4), [self.batch_size, self.trainLength, h_size]) 
# !!!!This is the line where error city happens!!!! 
self.state_in = rnn_cell.zero_state(self.batch_size, tf.float32) 

網絡初始化後:

mainQN = Qnetwork(h_size, cell, 'main') 

當在python控制檯中單獨運行代碼時,該錯誤仍然存​​在,因此錯誤是一致的。

我會發布更多的代碼,如果這將是有益的

回答

0

我會見了tensorflow的版本是1.2同樣的問題。+。

當我將它更改爲1.1.0時,問題解決了。

我認爲這是因爲rnn_cell.zero_state的API使得arg batch_size必須是標量或向量,而不是張量。

因此,如果您將batch_size更改爲標量,例如128,這個問題也可以解決。

2

還有另一種解決方案來解決這個問題。

變化

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

TO

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