Я пытаюсь реализовать нейронную сеть LSTM, используя тензорный поток для определения ключевых слов. Я питал нейронную сеть последовательностями 400 мс. Однако во время обучения я не хочу, чтобы LSTM запоминал последовательность 1, пытаясь, например, изучить последовательность 6. Итак, как я могу сбросить состояние LSTM во время тренировки. Имеет ли initial_state в аргументе outputs, state = rnn.rnn(cell, inputs, initial_state=self._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, я подал ей список ([batch_size, 39_MFCC]) длины n_timesteps. Я хотел бы знать, если состояние будет сбрасываться каждые n_timesteps если я реализовал: 'multi_lstm = rnn_cell.MultiRNNCell ([lstm_cell] * config.num_layers) = входной параметр init_state multi_lstm.zero_state (batch_size, tf.float32) выходы, состояния = rnn.rnn (multi_lstm, tmp, dtype = tf.float32, initial_state = init_state) ' – Chris
Нет причины для сброса состояния, если вы не сделаете это явно. Я не вижу в вашем коде 'n_timesteps' --- вы бы указали на усеченное обратное распространение? –