def __init__(self, geometry, actvfunc, rng=None, model_file=None):  

        # Generate random seed if not provided
        if rng is None:
            rng=np.random.RandomState(1234)

        # This will call NumpyMLP.__init__.py intializing 
        # Defining: self.n_layers self.params self.actvfunc 
        NumpyMLP.__init__(self, geometry, actvfunc, rng=rng, model_file=model_file) 

        # The parameters in the Theano MLP are stored as shared, borrowed 
        # variables. This data will be moved to the GPU when used 
        # use self.params.get_value() and self.params.set_value() to acces or
        # modify the data in the shared variables
        self.shared_params()

        # Symbolic variables representing the input and reference output
        x        = T.matrix('x')
        y        = T.ivector('y')      # Index of the correct class (int32)

        # Compile forward function
        self.fwd = theano.function([x], self._forward(x)) 
        # Compile list of gradient functions
        self.grs = [theano.function([x, y], _gr) for _gr in self._grads(x, y)]
Input: geometry  tuple with sizes of layer
dataset/ETHPy150Open LxMLS/lxmls-toolkit/lxmls/deep_learning/mlp.py/TheanoMLP.__init__