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))
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)