Esempio n. 1
0
    def __init__(self, *args, **kwargs):
        super(TestRecursive, self).__init__(*args, **kwargs)
        self.input_dim = 2
        self.state_dim = 2
        self.model = Recursive(return_sequences=True)
        self.model.add_input('input', ndim=3)  # Input is 3D tensor
        self.model.add_state('h', dim=self.state_dim)
        self.model.add_node(Dense(self.input_dim + self.state_dim,
                                  self.state_dim,
                                  init='one'),
                            name='rec',
                            inputs=['input', 'h'],
                            return_state='h')
        self.model.add_node(Activation('linear'),
                            name='out',
                            input='rec',
                            create_output=True)

        self.model2 = Sequential()
        self.model2.add(
            SimpleRNN(input_dim=self.input_dim,
                      activation='linear',
                      inner_init='one',
                      output_dim=self.state_dim,
                      init='one',
                      return_sequences=True))
Esempio n. 2
0
    def __init__(self, *args, **kwargs):
        super(TestOrthoRNN, self).__init__(*args, **kwargs)
        self.input_dim = 2
        self.state_dim = 2
        self.model = Recursive(return_sequences=True)
        self.model.add_input('input', ndim=3)  # Input is 3D tensor
        self.model.add_state('h', dim=self.state_dim)
        self.model.add_node(Dense(self.input_dim, self.state_dim, init='one'),
                            name='i2h',
                            inputs=[
                                'input',
                            ])
        self.model.add_node(Dense(self.state_dim,
                                  self.state_dim,
                                  init='orthogonal'),
                            name='h2h',
                            inputs=[
                                'h',
                            ])
        self.model.add_node(Lambda(lambda x: x),
                            name='rec',
                            inputs=['i2h', 'h2h'],
                            merge_mode='sum',
                            return_state='h',
                            create_output=True)

        self.model2 = Sequential()
        self.model2.add(
            SimpleRNN(input_dim=self.input_dim,
                      activation='linear',
                      inner_init='one',
                      output_dim=self.state_dim,
                      init='one',
                      return_sequences=True))
        U = self.model.nodes['h2h'].W.get_value()
        self.model2.layers[0].U.set_value(U)