我想實現一個使用張量流進行關鍵字檢測的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' ---你會引用截斷的反向傳播嗎? –