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