你能告诉我为什么在验证和测试中每个批处理过程后LSTM单元的状态都会更新吗?
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/rnn/ptb/ptb_word_lm.py#L269
我认为LSTM细胞的状态在验证和测试中应该是相同的值。
答案 0 :(得分:0)
没有。各州必须更新。这与数据馈送到网络的方式有关。一句话跨越多个批次。例如。说我们有batch_size = 1和num_steps = 2然后你有一个句子"棕色狐狸跳#34;首先是批次b1 = ['''棕色']然后是另一批次b2 = [' fox','跳转']。张量流简单地做的是采取处理b1后得到的最终隐藏状态,并将其重新用作b2的初始状态,这对于完美正确是对吗?
换句话说,这完全独立于您是在培训,测试还是在验证集上运行。此外,更新状态也与更改模型的参数无关。
答案 1 :(得分:0)
cell_state的初始化值由您设置,通常我们使用零状态进行初始化。
然而,一旦启动rnn进程,状态将根据输入序列进行更新。您可以将状态视为“rnn网络如何理解序列”。因此,当网络被馈送不同的序列时,单元状态是不同的。