2017-03-29 85 views
3

我對什麼是動態RNN(即dynamic_rnn)感到困惑。它在TensorFlow中返回輸出狀態。這些狀態和輸出是什麼?在TensorFlow中,什麼是動態RNN中的動態?什麼是TensorFlow中的動態RNN?

回答

5

動態RNN允許可變序列長度。您可能有一個輸入形狀爲(batch_size, max_sequence_length),但這樣可以讓您針對那些短於max_sequence_length的序列在正確的時間步長數上運行RNN。

相反,存在靜態RNN,它們預計運行整個固定的RNN長度。在某些情況下,您可能更願意這樣做,例如您是否將輸入填充到max_sequence_length

簡而言之,dynamic_rnn通常是您想要的變長序列數據。它有一個sequence_length參數,它是你的朋友。

+1

什麼是狀態和輸出?你可以解釋嗎? – xlax

1

雖然AlexDelPiero的回答是我用Google搜索的,但最初的問題卻不同。你可以看看關於LSTMs和他們背後的直覺的詳細描述。 LSTM是RNN最常見的例子。

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

簡短的回答是:所述狀態是從一個時步傳遞到另一個的內部細節。輸出是每個時間步的輸出張量。您通常需要將所有輸出傳遞給下一個RNN層或最後一個RNN層的最後一個輸出。要獲得最後一個輸出,您可以使用輸出[:, - 1,:]