我尝试使用tensorflow实现LSTM神经网络来进行关键字检测。我给神经网络喂了400ms的序列。但是,在训练期间,我并不希望LSTM在尝试学习序列6时记住序列1。那么如何在训练期间重置LSTM的状态。 outputs, state = rnn.rnn(cell, inputs, initial_state=self._initial_state)
参数中的initial_state是否允许在整个批次进给后重置LSTM的内存?
我尝试通过此链接了解实施情况:
https://github.com/tensorflow/models/blob/master/tutorials/rnn/ptb/ptb_word_lm.py
答案 0 :(得分:2)
ptb_word_lm.py self._initial_state
在整个程序中只设置一次:
self._initial_state = cell.zero_state(batch_size, data_type())
这意味着,它仍然是一个恒定的零向量。因此,展开LSTM的初始状态始终为零。在批量送入后,您不需要显式重置内存。
如果您想手动更新LSTM状态/ self._initial_state
,则需要将其定义为变量而不是Tensor。有关详细信息,请参阅答案here。