Tensorflow:修改隐藏状态的计算

Tensorflow: Modify Calculation of Hidden State

我想稍微修改在 LSTM 的每个时间步计算(并因此重新输入)的隐藏状态。例如,向常规 LSTM 过程产生的隐藏状态添加一个常量向量这样简单的事情。我不打算修改常规门机制——我更多地将其视为对通常由 LSTM 创建的最终隐藏状态的计算。我觉得创建自己的 LSTM 单元有点过头了。或者,OutputProjectionWrapper 似乎可以实现这个目标,虽然我不打算创建新的输出,只是修改隐藏状态。

如果您使用 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