Tensorflow:修改隐藏状态的计算

时间:2017-01-20 23:51:09

标签: python tensorflow lstm

我想略微修改在LSTM的每个时间步骤计算(并因此重新输入)的隐藏状态。例如,像常规LSTM进程生成的隐藏状态一样简单的常量向量。我并不打算修改常规门机制 - 我将此视为计算通常由LSTM创建的最终隐藏状态。我觉得创建自己的LSTM单元过度了。或者,awk -v line="#$line" '$0 == line { $0 = substr($0, 2) } 1' file.txt > $$.tmp && mv $$.tmp file.txt 似乎可以实现这一目标,虽然我不打算创建新的输出,只需修改隐藏状态。

1 个答案:

答案 0 :(得分:2)

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