基于链接:
https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn
在该示例中,显示了在第一个示例中而不是在第二个示例中定义了“初始状态”。谁能解释一下初始状态的目的是什么?如果我未设置,与我设置相比,差异是什么?是否像链接中提供的示例一样,仅在单个RNN单元中需要,而在堆叠式单元中不需要?
我目前正在调试RNN模型,因为它似乎将不同的问题归为同一类别,这很奇怪。我怀疑这可能与我没有设置单元格的初始状态有关。
答案 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会建立自己的内存,不需要加电。