0

我試圖找出在輸入上運行RNN是否更有效,然後在這些輸出上重複運行另一個RNN(一次一個水平層)。或者一次爲所有圖層運行一個時間步(一次一個垂直圖層)。在TensorFlow中實現多層RNN的最有效方法是什麼?

我知道tensorflow的MultiCellRNN類做後者。爲什麼選擇這種方法而不是前者?前者是否同樣有效?是否有時候爲所有圖層一次走一步是可取的?

參見http://karpathy.github.io/2015/05/21/rnn-effectiveness/以供多層RNN參考。

回答

2

1:如何輕鬆地實現了RNN 使用LSTM細胞,它們通常更好(沒有消失梯度問題)和tensorflow使得它很容易實現他們通過:

從tensorflow.python.ops .rnn_cell導入BasicLSTMCell ... 電池= BasicLSTMCell(state_dim) stacked_lstm = tf.nn.rnn_cell.MultiRNNCell([單元] * num_layers,state_is_tuple = TRUE)

找出tensorflow網站更多:https://www.tensorflow.org/tutorials/recurrent/

2:水平還是深度? 就像你可以有一個多層神經網絡一樣,你也可以有一個多層RNN。將RNN細胞想象成神經網絡中的一個層,這是一個特殊的層,可讓您記憶順序輸入。根據我的經驗,您的網絡中仍然會有線性變換(或深度),但是具有多層lstm單元的問題取決於您的網絡拓撲,偏好和計算能力。 (越多越好)輸入和輸出的數量取決於你的問題,並且據我記得,沒有多個水平RNN單元這樣的東西,只是深度。 所有計算一次完成深度明智的一個輸入。 您引用的多層功能非常棒,它可以爲您在引擎蓋下處理所有計算,只需告訴它您需要多少個單元,剩下的就可以完成。

好運

相關問題