tf.nn
中有幾個與RNN相關的類。在我在網上找到的例子中,tf.nn.dynamic_rnn
和tf.nn.rnn
似乎可以互換使用,或者至少我似乎無法弄清楚爲什麼要用一個來代替另一個。有什麼不同?tensorflow dynamic_rnn和rnn有什麼區別?
回答
從RNNs in Tensorflow, a Practical Guide and Undocumented Features丹尼布里茨,發表於8月21日,2016年
tf.nn.rnn
創建用於固定RNN長度的展開圖。那 的意思是,如果你打電話給tf.nn.rnn
輸入有200個時間步,你就是 創建一個帶有200個RNN步的靜態圖。首先,圖形創建速度慢,爲 。其次,您無法傳遞比您最初指定的 更長的序列(> 200)。
tf.nn.dynamic_rnn
解決了這個問題。它使用一個tf.While
循環動態地執行 構建圖形。這意味着創建圖表的速度更快,您可以提供批量的可變大小。
如果動態RNN提供了幾乎沒有缺點的所有優點,爲什麼還會使用靜態RNN? –
它們幾乎相同,但輸入和輸出結構有一些差異。從文檔:
tf.nn.dynamic_rnn
此功能在功能上等同於上述的功能
rnn
,但>執行的輸入完全動態展開。與
rnn
不同,輸入輸入不是張量的Python列表,每個幀都有一個 。相反,輸入可以是單張量,其中最大時間是第一維或第二維(參見參數time_major
)。或者,它可能是一個 Tensors(可能是嵌套的)元組,它們每個都有匹配的批處理和時間維度。 相應的輸出是具有與時間步長和批量大小相同的數字 的單張量或這種張量的(可能嵌套的)元組,匹配cell.output_size
的嵌套結構。
有關更多詳細信息,請瀏覽source。
- 1. 什麼是TensorFlow中的動態RNN?
- 2. 有什麼區別`和$(Bash中有什麼區別?
- 3. TensorFlow的contrib.slim.nets和models/slim/nets有什麼區別?
- 4. TensorFlow中的步驟和時代有什麼區別?
- 5. Tensorflow Argmax:「軸」和「尺寸」參數有什麼區別?
- 6. tensorflow的tf.nn.max_pool中'SAME'和'VALID'填充有什麼區別?
- 7. Tensorflow中的張量和變量有什麼區別
- 8. 在Tensorflow中,變量和張量之間有什麼區別?
- 9. 有什麼區別? :和||
- 10. &&和||有什麼區別?
- 11. 「/」和「/ *」有什麼區別?
- 12. 有什麼區別:。!和:r!?
- 13. ==和===有什麼區別?
- 14. Appender和〜有什麼區別?
- 15. $ @和$ *有什麼區別?
- 16. is和=有什麼區別?
- 17. #.00和#。##有什麼區別?
- 18. `==`和`is`有什麼區別?
- 19. '=='和'==='有什麼區別?
- 20. /和/#/有什麼區別?
- 21. | 0和~~有什麼區別?
- 22. `&`和`ref`有什麼區別?
- 23. ==和===有什麼區別?
- 24. ==和===有什麼區別?
- 25. `{}`和`[]`有什麼區別?
- 26. JavaScript和=== ===有什麼區別?
- 27. difftime和' - '有什麼區別?
- 28. =和==有什麼區別?
- 29. Keras:layers.Input和layers.InputLayer有什麼區別?
- 30. Tensorflow RNN variable_scope error
另請參閱此SO帖子https://stackoverflow.com/q/42497216/3924118,其中作者詢問有關'tf.nn.rnn'等效功能的更多最新版本的TensorFlow,它似乎是'tf.nn.static_rnn'。 – nbro