0
所以,我试图在张量流中使用rnn来生成文本。然而,一旦我从static_rnn到dynamic_rnn切换时,我得到这个错误:Tensorflow 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
形状是:( (截断文本长度,批量大小,类别数量)
对于(批量大小,隐藏状态大小)hidden_state_placeholder
的形状为(5,100),但错误仍然存在即使我没有提供初始状态。
tensorflow版本是1.3,如果有帮助。
任何见解将不胜感激!
对不起,关于最近的答复 - 我只是试着这个,并没有解决这个问题 - 我得到了同样的错误信息。 **是**,但在我的代码中是一个合法的错误,感谢您的支持! – frankie
'inputs_series = self.input_layer()'我无法测试此语句,因此我将其替换为固定大小的变量(以及其他未知参数)。请打印'inputs_series'的大小(例如'print(inputs_series.get_shape())')。我想这可能会有一些问题。 –
我做了打印,并找出它。我在'self.input_layer()'中进行了'tf.unstack()'操作,该操作将张量转换为10个张量列表。显然,这对于动态API而言并不合适。一旦我删除了拆散操作,一切都按预期工作。感谢所有的建议! – frankie