Tensorflow中LSTM的单元状态

时间:2016-10-05 14:52:51

标签: tensorflow lstm

你能告诉我为什么在验证和测试中每个批处理过程后LSTM单元的状态都会更新吗?

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/rnn/ptb/ptb_word_lm.py#L269

我认为LSTM细胞的状态在验证和测试中应该是相同的值。

2 个答案:

答案 0 :(得分:0)

没有。各州必须更新。这与数据馈送到网络的方式有关。一句话跨越多个批次。例如。说我们有batch_size = 1和num_steps = 2然后你有一个句子"棕色狐狸跳#34;首先是批次b1 = ['''棕色']然后是另一批次b2 = [' fox','跳转']。张量流简单地做的是采取处理b1后得到的最终隐藏状态,并将其重新用作b2的初始状态,这对于完美正确是对吗?

换句话说,这完全独立于您是在培训,测试还是在验证集上运行。此外,更新状态也与更改模型的参数无关。

答案 1 :(得分:0)

cell_state的初始化值由您设置,通常我们使用零状态进行初始化。

然而,一旦启动rnn进程,状态将根据输入序列进行更新。您可以将状态视为“rnn网络如何理解序列”。因此,当网络被馈送不同的序列时,单元状态是不同的。