我经历了this tutorial。在最后一个块中,它表示dynamic_rnn函数不能用于计算注意力。但是我不能理解的是我们所需要的只是解码器的隐藏状态,以便找到与编码器符号一起工作的注意力。
答案 0 :(得分:0)
编码器 - 解码器环境中的注意机制意味着每个时间步的解码器“参与”编码器的“有用”部分。这可以实现为,例如,平均编码器的输出,并在给定的时间步长将该值(称为上下文)馈送到解码器中。
dynamic_rnn
计算所有时间步长的LSTM单元格输出,并为您提供最终值。因此,没有办法告诉模型时间步t
的单元状态不仅应该依赖于前一个单元格和输入的输出,还要依赖于其他信息,例如 context 。您可以使用raw_rnn
控制编码器或解码器LSTM的每个时间步的计算。
如果我理解正确,在本教程中,作者在每个时间步骤将地面实况输入作为输入提供给解码器。但是,这不是通常的做法。通常,您希望在时间t
将解码器的输出作为输入提供给解码器t+1
。简而言之,每个时间步的解码器输入都是可变的,而在dynamic_rnn
中它是预定义的。
请参阅更多技术细节:https://arxiv.org/abs/1409.0473