예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)