下面是代碼:這是怎麼功能編程構建LSTM
def lstm(o, i, state):
#these are all calculated seperately, no overlap until....
#(input * input weights) + (output * weights for previous output) + bias
input_gate = tf.sigmoid(tf.matmul(i, w_ii) + tf.matmul(o,w_io) + b_i)
#(input * forget weights) + (output * weights for previous output) + bias
output_gate = tf.sigmoid(tf.matmul(i, w_oi) + tf.matmul(o,w_oo) + b_o)
#(input * forget weights) + (output * weights for previous output) + bias
forget_gate = tf.sigmoid(tf.matmul(i, w_fi) + tf.matmul(o,w_fo) + b_f)
memory_cell = tf.sigmoid(tf.matmul(i, w_ci) + tf.matmul(o,w_co) + b_c)
state = forget_gate * state + input_gate * memory_cell
output = output_gate * tf.tanh(state)
return output, state
這裏是LSTM的繪圖:
我無法理解如何在兩個配對。任何幫助將非常感激。
什麼特別是你需要幫助解釋? –
@JonasAdler所以,我不知道爲什麼每個門有兩個權重。此外,'c_t'似乎與輸入,輸出和忘記門都有相互作用,但我在代碼中看不到。 – madsthaks