我想实现一个使用张量流进行关键字检测的LSTM神经网络。我给神经网络提供了400ms的序列。然而,在训练过程中,我不想让LSTM在尝试学习序列6时记住序列1。那么如何在训练期间重置LSTM的状态。 outputs, state = rnn.rnn(cell, inputs, initial_state=self._initial_state)
参数中的initial_state是否允许在整个批次馈入后重置LSTM的内存?当LSTM状态重置
我试图理解这个链接的实现:
https://github.com/tensorflow/models/blob/master/tutorials/rnn/ptb/ptb_word_lm.py
我不确定了解您的目标,但您可以在运行网络时重置状态。说'network = tf.rnn.rnn_cell.MultiRNNCell(...)',然后运行'network(input,current_state)'产生一个输出和一个新的状态。例如,您可以忽略这个新状态并再次输入'current_state'。 –
是的,对不起,也许我不够清楚。当我训练LSTM网络时,我给它提供了一个长度为n_timesteps的列表([batch_size,39_MFCC])。我想知道如果我实现了状态将每n_timesteps复位: 'multi_lstm = rnn_cell.MultiRNNCell([lstm_cell] * config.num_layers) init_state = multi_lstm.zero_state(batch_size,tf.float32) outputs,states = rnn.rnn(multi_lstm,tmp,dtype = tf.float32,initial_state = init_state)' – Chris
除非明确地做,否则没有理由重置状态。我没有看到代码中的'n_timesteps' ---你会引用截断的反向传播吗? –