在动态RNN中设置初始状态

时间:2019-05-15 02:06:39

标签: tensorflow recurrent-neural-network

基于链接:

https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn

在该示例中,显示了在第一个示例中而不是在第二个示例中定义了“初始状态”。谁能解释一下初始状态的目的是什么?如果我未设置,与我设置相比,差异是什么?是否像链接中提供的示例一样,仅在单个RNN单元中需要,而在堆叠式单元中不需要

我目前正在调试RNN模型,因为它似乎将不同的问题归为同一类别,这很奇怪。我怀疑这可能与我没有设置单元格的初始状态有关。

1 个答案:

答案 0 :(得分:1)

  

谁能解释一下初始状态的目的是什么?

我们知道状态矩阵是时间步1和时间步2中隐藏神经元之间的权重。它们将两个时间步的隐藏神经元合并在一起。因此,它们在先前的时间步长中保存来自各层的时间数据。

通过initial_state=参数提供初始训练的状态矩阵,从而为RNN单元提供其先前激活的训练后的记忆

  

如果我不设置它,与设置它相比有什么区别?

如果我们设置已经在其他模型或先前模型上训练过的初始权重,则意味着我们正在还原RNN单元的内存,从而不必从头开始。

在TF文档中,他们已将initial_state初始化为zero_state矩阵。

如果您未设置initial_state,它将像其他重量矩阵一样从头开始训练。

  

是否仅需要在单个RNN单元中而不是像在链接中提供的示例中那样在堆叠式单元中?

我完全不知道为什么他们没有在Stacked RNN示例中设置initial_state,但是每种RNN类型都需要initial_state,因为它保留了跨时间步长的时间特征。 / p>

也许,堆叠RNN是文档中的关注点,而不是initial_state的设置。

提示:

在大多数情况下,您无需为RNN设置initial_state。 TensorFlow可以为我们有效地解决这一问题。对于seq2seq RNN,可以使用此属性。

您的RNN可能面临其他问题。您的RNN会建立自己的内存,不需要加电。