Tensorflow dynamic_rnn 输入排名错误
Tensorflow dynamic_rnn input rank error
所以,我正在尝试使用 tensorflow 中的 rnn 来生成文本。但是,一旦我从 static_rnn 切换到 dynamic_rnn,我就得到了这个错误:
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor_shape.py", line 654, in with_rank_at_least
raise ValueError("Shape %s must have rank at least %d" % (self, rank))
ValueError: Shape (100, 5) must have rank at least 3
这是产生错误的代码部分:
inputs_series = self.input_layer()
with tf.variable_scope(constants.HIDDEN):
self.hidden_state_placeholder = tf.placeholder(
dtype=tf.float32,
shape=[self.settings.train.batch_size, self.settings.rnn.hidden_size],
name="hidden_state_placeholder")
cell = tf.contrib.rnn.GRUCell(self.settings.rnn.hidden_size)
states_series, self.current_state = tf.nn.dynamic_rnn(
cell=cell,
inputs=inputs_series,
initial_state=self.hidden_state_placeholder)
inputs_series
的shape为:(10,5,100),对应(截断的文字长度,batch size,类的个数)
hidden_state_placeholder
的形状是 (5, 100) for (batch size, hidden state size),但即使我不提供初始状态,错误仍然存在。
tensorflow版本是1.3,如果有帮助。
如有任何见解,我们将不胜感激!
默认情况下,time_major == False
在 tf.nn.dynamic_rnn
,但你的 inputs_series
是 time_major == True
。所以也许将最后一条语句更改为
states_series, self.current_state = tf.nn.dynamic_rnn(
cell=cell,
inputs=inputs_series,
initial_state=self.hidden_state_placeholder,
time_major=True)
所以,我正在尝试使用 tensorflow 中的 rnn 来生成文本。但是,一旦我从 static_rnn 切换到 dynamic_rnn,我就得到了这个错误:
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor_shape.py", line 654, in with_rank_at_least
raise ValueError("Shape %s must have rank at least %d" % (self, rank))
ValueError: Shape (100, 5) must have rank at least 3
这是产生错误的代码部分:
inputs_series = self.input_layer()
with tf.variable_scope(constants.HIDDEN):
self.hidden_state_placeholder = tf.placeholder(
dtype=tf.float32,
shape=[self.settings.train.batch_size, self.settings.rnn.hidden_size],
name="hidden_state_placeholder")
cell = tf.contrib.rnn.GRUCell(self.settings.rnn.hidden_size)
states_series, self.current_state = tf.nn.dynamic_rnn(
cell=cell,
inputs=inputs_series,
initial_state=self.hidden_state_placeholder)
inputs_series
的shape为:(10,5,100),对应(截断的文字长度,batch size,类的个数)
hidden_state_placeholder
的形状是 (5, 100) for (batch size, hidden state size),但即使我不提供初始状态,错误仍然存在。
tensorflow版本是1.3,如果有帮助。
如有任何见解,我们将不胜感激!
默认情况下,time_major == False
在 tf.nn.dynamic_rnn
,但你的 inputs_series
是 time_major == True
。所以也许将最后一条语句更改为
states_series, self.current_state = tf.nn.dynamic_rnn(
cell=cell,
inputs=inputs_series,
initial_state=self.hidden_state_placeholder,
time_major=True)