2017-01-20 2 views
0

Я хотел бы немного изменить отображаемое (и, следовательно, повторно введенное) скрытое состояние на каждом временном шаге LSTM. Например, что-то простое, как добавление постоянного вектора в скрытое состояние, создаваемое обычным процессом LSTM. Я не намерен изменять регулярную механику ворот - я рассматриваю это скорее как вычисление конечного скрытого состояния, которое обычно создается LSTM. Я чувствую, что создание собственной ячейки LSTM переусердствует. Альтернативно, OutputProjectionWrapper кажется, что он может достичь этой цели, хотя я не собираюсь создавать новый вывод, просто измените скрытое состояние.Tensorflow: Измените вычисление скрытого состояния

ответ

1

Вы можете изменить состояние LSTM между шагами по времени, если вы используете цикл для обработки ваших последовательностей, так как ячейки РНН в TensorFlow принимает два аргумента: новый вход и скрытое состояние:

lstm = rnn_cell.BasicLSTMCell(lstm_size) 

initial_state = state = tf.zeros([batch_size, lstm.state_size]) 

with tf.variable_scope("RNN"): 
    for time_step in range(num_steps): 
    if time_step > 0: tf.get_variable_scope().reuse_variables() 

    # modify the state 
    modified_state = state + 1 

    output, state = lstm(words[:, i], modified_state) 


final_state = state 
Смежные вопросы