2017-01-20 175 views
0

我想稍微修改在LSTM的每个时间步骤计算(并因此重新输入)的隐藏状态。例如,只需将常量向量添加到由常规LSTM过程生成的隐藏状态即可。我不打算修改正规门机制 - 我更多地将其视为通常由LSTM创建的最终隐藏状态的计算。我觉得创建我自己的LSTM单元过度了。另外,OutputProjectionWrapper似乎可以实现这一目标,但我不打算创建一个新的输出,只是修改隐藏状态。Tensorflow:修改隐藏状态的计算

回答

1

你可以,如果你正在使用一个for循环来处理您的序列修改时间步长之间的LSTM的状态下,由于TensorFlow的RNN细胞有两个参数:新的输入和隐藏状态:

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