Beispiel #1
0
    def __init__(self,
                 num_input,
                 num_cells,
                 input_layers=None,
                 name="",
                 go_backwards=False):
        """
        GRU Layer
        Takes as input sequence of inputs, returns sequence of outputs
        """

        self.name = name
        self.num_input = num_input
        self.num_cells = num_cells

        if len(input_layers) >= 2:
            self.X = T.concatenate(
                [input_layer.output() for input_layer in input_layers], axis=1)
        else:
            self.X = input_layers[0].output()

        self.s0 = zeros(num_cells)
        self.go_backwards = go_backwards

        self.U_z = random_weights((num_input, num_cells),
                                  name=self.name + "U_z")
        self.W_z = random_weights((num_cells, num_cells),
                                  name=self.name + "W_z")
        self.U_r = random_weights((num_input, num_cells),
                                  name=self.name + "U_r")
        self.W_r = random_weights((num_cells, num_cells),
                                  name=self.name + "W_r")
        self.U_h = random_weights((num_input, num_cells),
                                  name=self.name + "U_h")
        self.W_h = random_weights((num_cells, num_cells),
                                  name=self.name + "W_h")
        self.b_z = zeros(num_cells, name=self.name + "b_z")
        self.b_r = zeros(num_cells, name=self.name + "b_r")
        self.b_h = zeros(num_cells, name=self.name + "b_h")

        self.params = [
            self.U_z, self.W_z, self.U_r, self.W_r, self.U_h, self.W_h,
            self.b_z, self.b_r, self.b_h
        ]

        self.output()
Beispiel #2
0
    def __init__(self, num_input, num_output, input_layers, name=""):

        if len(input_layers) >= 2:
            self.X = T.concatenate(
                [input_layer.output() for input_layer in input_layers], axis=1)
        else:
            self.X = input_layers[0].output()
        self.W_yh = random_weights((num_input, num_output), name="W_yh_FC")
        self.b_y = zeros(num_output, name="b_y_FC")
        self.params = [self.W_yh, self.b_y]
Beispiel #3
0
    def __init__(self,
                 num_input,
                 num_hidden,
                 input_layers=None,
                 name="",
                 go_backwards=False):
        """
        MGU Layer from 周志华paper
        Takes as input sequence of inputs, returns sequence of outputs
        """
        self.name = name
        self.num_input = num_input
        self.num_hidden = num_hidden

        if len(input_layers) >= 2:
            # axis=1  an row xiang jia
            self.X = T.concatenate(
                [input_layer.output() for input_layer in input_layers], axis=1)
        else:
            self.X = input_layers[0].output()

        self.h0 = theano.shared(floatX(np.zeros(num_hidden)))
        self.s0 = theano.shared(floatX(np.zeros(num_hidden)))

        self.go_backwards = go_backwards

        self.W_fx = random_weights((num_input, num_hidden),
                                   name=self.name + "W_fx")
        self.W_fh = random_weights((num_hidden, num_hidden),
                                   name=self.name + "W_fh")
        self.U_h = random_weights((num_input, num_hidden),
                                  name=self.name + "U_h")
        self.W_h = random_weights((num_hidden, num_hidden),
                                  name=self.name + "W_h")

        self.b_f = zeros(num_hidden, name=self.name + "b_f")
        self.b_h = zeros(num_hidden, name=self.name + "b_h")

        self.params = [self.W_fx, self.W_fh, self.b_f]
        self.output()
Beispiel #4
0
    def __init__(self, num_input, num_output, input_layers, name=""):

        if len(input_layers) >= 2:
            print "number of input layers: %s" % len(input_layers)
            print "len of list comprehension: %s" % len(
                [input_layer.output() for input_layer in input_layers])
            self.X = T.concatenate(
                [input_layer.output() for input_layer in input_layers], axis=1)
        else:
            self.X = input_layers[0].output()
        self.W_yh = random_weights((num_input, num_output), name="W_yh")
        self.b_y = zeros(num_output, name="b_y")
        self.params = [self.W_yh, self.b_y]
Beispiel #5
0
    def __init__(self,
                 num_input,
                 num_output,
                 input_layer,
                 temperature=1.0,
                 name="FC"):
        self.name = name
        self.X = input_layer
        self.params = []
        self.temp = temperature

        self.W_yh = random_weights((num_input, num_output), name="W_yh")
        self.b_y = zeros(num_output, name="b_y")

        self.params = [self.W_yh, self.b_y]
Beispiel #6
0
    def __init__(self,
                 num_input,
                 num_hidden,
                 input_layers=None,
                 name="",
                 go_backwards=False):

        self.name = name
        self.num_input = num_input
        self.num_hidden = num_hidden

        if len(input_layers) >= 2:
            self.X = T.concatenate(
                [input_layer.output() for input_layer in input_layers], axis=1)
        else:
            self.X = input_layers[0].output()

        self.h0 = theano.shared(floatX(np.zeros(num_hidden)))
        self.s0 = theano.shared(floatX(np.zeros(num_hidden)))

        self.go_backwards = go_backwards

        self.W_gx = random_weights((num_input, num_hidden),
                                   name=self.name + "W_gx")
        self.W_ix = random_weights((num_input, num_hidden),
                                   name=self.name + "W_ix")
        self.W_fx = random_weights((num_input, num_hidden),
                                   name=self.name + "W_fx")
        self.W_ox = random_weights((num_input, num_hidden),
                                   name=self.name + "W_ox")

        self.W_gh = random_weights((num_hidden, num_hidden),
                                   name=self.name + "W_gh")
        self.W_ih = random_weights((num_hidden, num_hidden),
                                   name=self.name + "W_ih")
        self.W_fh = random_weights((num_hidden, num_hidden),
                                   name=self.name + "W_fh")
        self.W_oh = random_weights((num_hidden, num_hidden),
                                   name=self.name + "W_oh")

        self.b_g = zeros(num_hidden, name=self.name + "b_g")
        self.b_i = zeros(num_hidden, name=self.name + "b_i")
        self.b_f = zeros(num_hidden, name=self.name + "b_f")
        self.b_o = zeros(num_hidden, name=self.name + "b_o")

        self.params = [
            self.W_gx,
            self.W_ix,
            self.W_ox,
            self.W_fx,
            self.W_gh,
            self.W_ih,
            self.W_oh,
            self.W_fh,
            self.b_g,
            self.b_i,
            self.b_f,
            self.b_o,
        ]

        self.output()
Beispiel #7
0
 def reset_state(self):
     self.s0 = zeros(self.num_cells)
Beispiel #8
0
 def reset_state(self):
     self.s0 = zeros(self.num_hidden)