def build_training_graph(self): self.run_extension('ext_regularize_pre_grad') self.grads = OrderedDict(izip(self.params, T.grad(self.cost, self.params))) self.run_extension('ext_grad') grads = self.optimizer.get_updates(self.grads) for key, val in grads.items(): self.updates[key] = val self.run_extension('ext_regularize_post_grad') return self.build_theano_graph(self.inputs, self.outputs, self.updates)
unit='tanh', init_W=init_W, init_U=init_U, init_b=init_b) output = FullyConnectedLayer(name='output', parent=['h1', 'h2', 'h3'], parent_dim=[200, 200, 200], nout=frame_size, unit='sigmoid', init_W=init_W, init_b=init_b) nodes = [h1, h2, h3, output] params = OrderedDict() for node in nodes: params.update(node.initialize()) params = init_tparams(params) s1_0 = h1.get_init_state(batch_size) s2_0 = h2.get_init_state(batch_size) s3_0 = h3.get_init_state(batch_size) def inner_fn(x_t, s1_tm1, s2_tm1, s3_tm1): s1_t = h1.fprop([[x_t], [s1_tm1, s2_tm1, s3_tm1]], params) s2_t = h2.fprop([[s1_t], [s2_tm1, s1_tm1, s3_tm1]], params) s3_t = h3.fprop([[s2_t], [s3_tm1], s1_tm1, s2_tm1], params) y_hat_t = output.fprop([s1_t, s2_t, s3_t], params)