张量流中tf.nn.dynamic_rnn和tf.nn.raw_rnn有什么区别?

时间:2017-05-30 21:09:35

标签: tensorflow deep-learning

我经历了this tutorial。在最后一个块中,它表示dynamic_rnn函数不能用于计算注意力。但是我不能理解的是我们所需要的只是解码器的隐藏状态,以便找到与编码器符号一起工作的注意力。

1 个答案:

答案 0 :(得分:0)

编码器 - 解码器环境中的注意机制意味着每个时间步的解码器“参与”编码器的“有用”部分。这可以实现为,例如,平均编码器的输出,并在给定的时间步长将该值(称为上下文)馈送到解码器中。

dynamic_rnn计算所有时间步长的LSTM单元格输出,并为您提供最终值。因此,没有办法告诉模型时间步t的单元状态不仅应该依赖于前一个单元格和输入的输出,还要依赖于其他信息,例如 context 。您可以使用raw_rnn控制编码器或解码器LSTM的每个时间步的计算。

如果我理解正确,在本教程中,作者在每个时间步骤将地面实况输入作为输入提供给解码器。但是,这不是通常的做法。通常,您希望在时间t将解码器的输出作为输入提供给解码器t+1。简而言之,每个时间步的解码器输入都是可变的,而在dynamic_rnn中它是预定义的。

请参阅更多技术细节:https://arxiv.org/abs/1409.0473