2017-01-20 125 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