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