def update(self, state, input, output=True):
u_gate = tf.matmul(input, self.params['Uxh'])
if state is not None:
u_gate += tf.matmul(state, self.params['Uhh'])
r_gate = tf.sigmoid(tf.matmul(input, self.params['Rxh']) +
tf.matmul(state, self.params['Rhh']))
u_gate = tf.sigmoid(u_gate)
operand = tf.matmul(input, self.params['Wxh']) + self.params['bhid']
if state is not None:
operand += tf.matmul(state * r_gate, self.params['Whh'])
new_state = self.coding(operand) * (1. - u_gate)
if state is not None:
new_state += state * u_gate
if not output: return new_state
return new_state, self.get_output(new_state)
评论列表
文章目录