Пример #1
0
 def step(h, c, x):
     # forget gate
     f = tf.sigmoid(
         ln(
             tf.matmul(x, w_f) + tf.matmul(h, u_f) +
             (b_f if opt.bias else 0)))
     # input gate
     i = tf.sigmoid(
         ln(
             tf.matmul(x, w_i) + tf.matmul(h, u_i) +
             (b_i if opt.bias else 0)))
     # new cell value
     cc = tf.tanh(
         ln(
             tf.matmul(x, w_c) + tf.matmul(h, u_c) +
             (b_c if opt.bias else 0)))
     # out gate
     o = tf.sigmoid(
         ln(
             tf.matmul(x, w_o) + tf.matmul(h, u_o) +
             (b_o if opt.bias else 0)))
     # cell update
     cell = f * c + i * cc
     # final output
     y = o * tf.tanh(cell)
     return y, cell
Пример #2
0
 def step(hh, x):
     # update gate
     z = tf.sigmoid(ln(tf.matmul(x, w_z) + tf.matmul(hh, u_z) + (b_z if opt.bias else 0)))
     # reset gate
     r = tf.sigmoid(ln(tf.matmul(x, w_r) + tf.matmul(hh, u_r) + (b_r if opt.bias else 0)))
     # h_hat
     h_hat = tf.tanh(ln(tf.matmul(x, w_h) + tf.matmul(r * hh, u_h) + (b_h if opt.bias else 0)))
     # final output
     y = (1. - z) * h_hat + z * hh
     return y