Ejemplo n.º 1
0
    def build(self):
  
        if self.stateful:
            self.reset_states()
        else:
            self.states = [None, None]

        self.W_s = self.init((self.output_dim, self.output_dim))
        self.W_t = self.init((self.output_dim, self.output_dim))
        self.W_a = self.init((self.output_dim, self.output_dim))
        self.w_e = K.zeros((self.output_dim,))

        self.W_i = self.init((2 * self.output_dim, self.output_dim))
        self.U_i = self.inner_init((self.output_dim, self.output_dim))
        self.b_i = K.zeros((self.output_dim,))

        self.W_f = self.init((2 * self.output_dim, self.output_dim))
        self.U_f = self.inner_init((self.output_dim, self.output_dim))
        self.b_f = self.forget_bias_init((self.output_dim,))

        self.W_c = self.init((2 * self.output_dim, self.output_dim))
        self.U_c = self.inner_init((self.output_dim, self.output_dim))
        self.b_c = K.zeros((self.output_dim,))

        self.W_o = self.init((2 * self.output_dim, self.output_dim))
        self.U_o = self.inner_init((self.output_dim, self.output_dim))
        self.b_o = K.zeros((self.output_dim,))
        
        
        self.trainable_weights = [self.W_s, self.W_t, self.W_a, self.w_e,
                       self.W_i, self.U_i, self.b_i,
                       self.W_c, self.U_c, self.b_c,
                       self.W_f, self.U_f, self.b_f,
                       self.W_o, self.U_o, self.b_o]
Ejemplo n.º 2
0
    def reset_states(self):
        assert self.stateful, 'Layer must be stateful.'

        if hasattr(self, 'states'):
            K.set_value(self.states[0], np.zeros((self.batch_size, self.output_dim)))
            K.set_value(self.states[1], np.zeros((self.batch_size, self.output_dim)))
        else:
            self.states = [K.zeros((self.batch_size, self.output_dim)), 
                           K.zeros((self.batch_size, self.output_dim))]
Ejemplo n.º 3
0
 def get_initial_states(self, X):
     # build an all-zero tensor of shape (samples, output_dim)
     initial_state = K.zeros_like(X)  # (samples, timesteps, input_dim)
     initial_state = K.sum(initial_state, axis=1)  # (samples, input_dim)
     reducer = K.zeros((self.output_dim, self.output_dim))
     initial_state = K.dot(initial_state, reducer)  # (samples, output_dim)
     initial_states = [initial_state for _ in range(len(self.states))]
     return initial_states
Ejemplo n.º 4
0
 def get_initial_states(self, x):
     # build an all-zero tensor of shape (samples, output_dim)
     initial_state = K.zeros_like(x)  # (samples, timesteps, input_dim)
     initial_state = K.sum(initial_state, axis=1)  # (samples, input_dim)
     reducer = K.zeros((self.input_dim, self.output_dim))
     initial_state = K.dot(initial_state, reducer)  # (samples, output_dim)
     initial_states = [initial_state for _ in range(len(self.states))]
     if self.feed_layer is not None:
         initial_states[1] =  self.feed_layer
     return initial_states
Ejemplo n.º 5
0
 def get_initial_states(self, x):
     # build an all-zero tensor of shape (samples, output_dim)
     initial_state = K.zeros_like(x)  # (samples, timesteps, input_dim)
     initial_state = K.sum(initial_state, axis=1)  # (samples, input_dim)
     reducer = K.zeros((self.input_dim, self.output_dim))
     initial_state = K.dot(initial_state, reducer)  # (samples, output_dim)
     initial_states = [initial_state for _ in range(len(self.states))]
     if self.feed_layer is not None:
         initial_states[1] = self.feed_layer
     return initial_states
Ejemplo n.º 6
0
    def build(self, input_shape):
        
        self.input_spec = [InputSpec(shape=shape) for shape in input_shape]
        
        input_dim = input_shape[1][2]
        self.input_dim = input_dim
        
        if self.stateful:
            self.reset_states()
        else:
            self.states = [None, None]

        self.W_s = self.init((self.output_dim, self.output_dim))
        self.W_t = self.init((self.output_dim, self.output_dim))
        self.W_a = self.init((self.output_dim, self.output_dim))
        self.w_e = K.zeros((self.output_dim,))

        self.W_i = self.init((2 * self.output_dim, self.output_dim))
        self.U_i = self.inner_init((self.output_dim, self.output_dim))
        self.b_i = K.zeros((self.output_dim,))

        self.W_f = self.init((2 * self.output_dim, self.output_dim))
        self.U_f = self.inner_init((self.output_dim, self.output_dim))
        self.b_f = self.forget_bias_init((self.output_dim,))

        self.W_c = self.init((2 * self.output_dim, self.output_dim))
        self.U_c = self.inner_init((self.output_dim, self.output_dim))
        self.b_c = K.zeros((self.output_dim,))

        self.W_o = self.init((2 * self.output_dim, self.output_dim))
        self.U_o = self.inner_init((self.output_dim, self.output_dim))
        self.b_o = K.zeros((self.output_dim,))
        
        
        self.trainable_weights = [self.W_s, self.W_t, self.W_a, self.w_e,
                       self.W_i, self.U_i, self.b_i,
                       self.W_c, self.U_c, self.b_c,
                       self.W_f, self.U_f, self.b_f,
                       self.W_o, self.U_o, self.b_o]
Ejemplo n.º 7
0
    def build(self, input_shape):

        self.input_spec = [InputSpec(shape=shape) for shape in input_shape]

        input_dim = input_shape[1][2]
        self.input_dim = input_dim

        if self.stateful:
            self.reset_states()
        else:
            self.states = [None, None]

        self.W_s = self.init((self.output_dim, self.output_dim))
        self.W_t = self.init((self.output_dim, self.output_dim))
        self.W_a = self.init((self.output_dim, self.output_dim))
        self.w_e = K.zeros((self.output_dim, ))

        self.W_i = self.init((2 * self.output_dim, self.output_dim))
        self.U_i = self.inner_init((self.output_dim, self.output_dim))
        self.b_i = K.zeros((self.output_dim, ))

        self.W_f = self.init((2 * self.output_dim, self.output_dim))
        self.U_f = self.inner_init((self.output_dim, self.output_dim))
        self.b_f = self.forget_bias_init((self.output_dim, ))

        self.W_c = self.init((2 * self.output_dim, self.output_dim))
        self.U_c = self.inner_init((self.output_dim, self.output_dim))
        self.b_c = K.zeros((self.output_dim, ))

        self.W_o = self.init((2 * self.output_dim, self.output_dim))
        self.U_o = self.inner_init((self.output_dim, self.output_dim))
        self.b_o = K.zeros((self.output_dim, ))

        self.trainable_weights = [
            self.W_s, self.W_t, self.W_a, self.w_e, self.W_i, self.U_i,
            self.b_i, self.W_c, self.U_c, self.b_c, self.W_f, self.U_f,
            self.b_f, self.W_o, self.U_o, self.b_o
        ]