def __call__(self, inputs, state, scope=None): """""" with tf.variable_scope(scope or type(self).__name__): cell_tm1, hidden_tm1 = tf.split(state, 2, axis=1) input_list = [inputs, hidden_tm1] with tf.variable_scope('Gates'): gates = linear(inputs_list, self.output_size, add_bias=True, n_splits=2, moving_params=self.moving_params) update_act, reset_act = gates update_gate = gate(update_act - self.forget_bias) reset_gate = gate(reset_act) reset_state = reset_gate * hidden_tm1 input_list = [inputs, reset_state] with tf.variable_scope('Candidate'): hidden_act = linear(input_list, self.output_size, add_bias=True, moving_params=self.moving_params) hidden_tilde = self.recur_func(hidden_act) cell_t = update_gate * cell_tm1 + (1 - update_gate) * hidden_tilde return cell_t, tf.concat([cell_t, cell_t], 1)
def __call__(self, inputs, state, scope=None): """""" print('===lstm_cell.py: Call for LSTMCell', ' name=', self.name) with tf.variable_scope(scope or type(self).__name__): cell_tm1, hidden_tm1 = tf.split(state, 2, axis=1) input_list = [inputs, hidden_tm1] lin = linear(input_list, self.output_size, add_bias=True, n_splits=4, moving_params=self.moving_params) cell_act, input_act, forget_act, output_act = lin cell_tilde_t = tanh(cell_act) input_gate = gate(input_act) forget_gate = gate(forget_act - self.forget_bias) output_gate = gate(output_act) cell_t = input_gate * cell_tilde_t + (1 - forget_gate) * cell_tm1 hidden_tilde_t = self.recur_func(cell_t) hidden_t = hidden_tilde_t * output_gate print("===lstm_cell.py: END Call for LSTMCell", " hidden_t_size=", hidden_t.get_shape().as_list()[-1], " state_size=", tf.concat([cell_t, hidden_t], 1).get_shape()) return hidden_t, tf.concat([cell_t, hidden_t], 1)
def __call__(self, inputs, state, scope=None): """""" with tf.variable_scope(scope or type(self).__name__): cell_tm1, hidden_tm1 = tf.split(state, 2, axis=1) input_list = [inputs, hidden_tm1] lin = linear(input_list, self.output_size, add_bias=True, n_splits=3, moving_params=self.moving_params) cell_act, update_act, output_act = lin cell_tilde_t = cell_act update_gate = gate(update_act - self.forget_bias) output_gate = gate(output_act) cell_t = update_gate * cell_tilde_t + (1 - update_gate) * cell_tm1 hidden_tilde_t = self.recur_func(cell_t) hidden_t = hidden_tilde_t * output_gate return hidden_t, tf.concat([cell_t, hidden_t], 1)