在tensorflow.contrib.seq2seq
的AttentionWrapper
中,「深度」是指attention_layer_size
文檔中所述的含義是什麼?如果文檔中說如果值爲None
「使用上下文作爲關注」,那麼「上下文」是什麼意思?澄清TensorFlow AttentionWrapper的層大小
1
A
回答
1
在Neural Machine Translation by Jointly Learning to Align and Translate他們給(Bahdanau)注意機制的描述;基本上會發生什麼是你計算的標量「對齊分數」a_1, a_2, ..., a_n
,它表明你的編碼輸入序列的每個元素在給定的時刻是多麼重要(即在當前時間步中你應該注意哪一部分輸入句子)。
假設您要「注意」/「注視」的(編碼的)輸入序列是一個表示爲e_1, e_2, ..., e_n
的矢量序列,給定時間步的上下文向量是所有這些的加權和你對準成績:
context = c := (a_1*e_1) + (a_2*e_2) + ... + (a_n*e_n)
(記住a_k
的是標量;如果你的模型,你可以認爲這是一個‘平均出’信/字在你的句子---那麼理想訓練得很好,上下文看起來與你最想要注意的e_i
最相似,但是與你有一點相似之處e_{i-1}
,e_{i+1}
等直覺上,認爲「塗出」輸入組件,如果讓任何意義......)
無論如何,如果attention_layer_size
不None
,那麼它指定一個隱藏單元的數量解碼器中的前饋層,用於將此上下文向量與解碼器內部RNN單元的輸出混合以獲得關注值。如果attention_layer_size == None
,它只是使用上面的上下文向量作爲注意值,並且不會混合內部RNN單元的輸出。 (當我說「混合」時,我的意思是將上下文向量和RNN單元格的輸出連接起來,然後投影到您通過設置attention_layer_size
指定的維度。)
實現的相關部分位於this line並且具有描述它是如何計算的。
希望有幫助!
相關問題
- 1. Tensorflow tf.nn.conv2d澄清
- 2. 澄清TensorFlow的dynamic_decode sample_ids
- 3. Tensorflow:圖層大小取決於批量大小?
- 4. 小BFS詳細澄清
- 5. 澄清大中央調度
- 6. 在視圖層次,澄清需要
- 7. Kineticjs類層次結構澄清
- 8. 澄清硬件抽象層上
- 9. shutil.rmtree()澄清
- 10. 澄清
- 11. 澄清
- 12. 澄清
- 13. 澄清
- 14. 澄清
- 15. sizeof數組澄清
- 16. BackgroundTask澄清
- 17. 的String [] []澄清
- 18. 的GroupBy澄清
- 19. 澄清的Java
- 20. 澄清 - Java的
- 21. ExtJS的澄清
- 22. 澄清NSNotificationCenter
- 23. 構造澄清
- 24. Regex.IsMatch澄清
- 25. 澄清同步
- 26. 關於Tensorflow張量形狀和matmul的澄清
- 27. HTTP/2動態表大小更新澄清
- 28. 澄清什麼CSS字體大小措施
- 29. 使用大寫和小寫方案符號,需要澄清
- 30. 關於SQL語法區分大小寫澄清
這非常有幫助!如果我可以問兩個後續問題,(1)是否有推薦的attention_layer_size? (2)你能否提供一些關於何時使用連接和投影以及何時使用上下文向量的直覺? –
我已經將'attention_layer_size'設置爲數百個隱藏單位的順序,並取得了良好的效果,但它依賴於手邊的任務(我通常會首先嚐試先裝備大量隱藏單元,然後將其最小化直到它達到儘可能低的水平,同時保持驗證集性能良好)。 FWIW,在神經機器翻譯論文中,我認爲其中有數百種(混合實際上比前饋NN更像是一個矩陣投影,因爲沒有激活;我略微錯誤地指出)。 我通常會同時使用上下文和RNN輸出。 – ptsw
好的,謝謝!我正努力將我的序列調試到序列模型。既然聽起來你有這方面的經驗,我可以給你發電子郵件嗎? –