我目前正在学习RNN和Tensorflow RNN API。
对于tf.contrib.rnn.static_rnn
,它有一个参数initial_state
,这是一个可选参数。通过初始状态与不通过初始状态有什么区别?如果我不添加initial_state,那是否意味着RNN内部状态输出将不会结转?
非常感谢您!
答案 0 :(得分:1)
基本的RNN方程沿state_t = nonlinearity(matmul(state_t-1, state_weights) + matmul(input_t, input_weights))
线。即,给定时间步长的状态取决于前一个时间步长的状态。这是一个递归定义,因此需要一个“递归停止”,即初始状态,即state_0
(或state_-1
,我想如果您从0开始对输入进行索引...)。 / p>
如果您未通过初始状态,则Tensorflow默认使用零张量。一种替代方法是使其变得可训练(通过使用tf.Variable
)。处理初始状态的另一个示例是编码器-解码器体系结构,其中一个网络(编码器)计算输出,然后将其用作解码器的初始状态。