在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
好的,谢谢!我正努力将我的序列调试到序列模型。既然听起来你有这方面的经验,我可以给你发电子邮件吗? –