Source code for Tars.models.model

import numpy as np
import theano.tensor as T
from theano.tensor.shared_randomstreams import RandomStreams
from lasagne.updates import total_norm_constraint
from abc import ABCMeta, abstractmethod


[docs]class Model(object): __metaclass__ = ABCMeta def __init__(self, n_batch=100, seed=1234): self.n_batch = n_batch self.set_seed(seed) self.prior_mode = "Normal"
[docs] @abstractmethod def train(self): pass
[docs] def set_seed(self, seed=1234): self.rng = np.random.RandomState(seed) self.srng = RandomStreams(seed)
def _get_updates(self, loss, params, optimizer, optimizer_params={}, clip_grad=None, max_norm_constraint=None, clip_param=None): if clip_param: print clip_param params = [T.clip(p, -clip_param, clip_param) for p in params] grads = T.grad(loss, params) if max_norm_constraint: grads =\ total_norm_constraint(grads, max_norm=max_norm_constraint) if clip_grad: grads = [T.clip(g, -clip_grad, clip_grad) for g in grads] return optimizer(grads, params, **optimizer_params)