'Initialize the parameters of the logistic regression
:type input: theano.tensor.TensorType
:param input: symbolic variable that describes the input of the
architecture (one minibatch)
:type n_in: int
:param n_in: number of input units, the dimension of the space in
which the datapoints lie
:type n_out: int
:param n_out: number of output units, the dimension of the space in
which the labels lie'

def __init__(self, input, n_in, n_out, W=None, b=None):

    if (W is None):
        self.W = theano.shared(value=numpy.zeros((n_in, n_out), dtype=theano.config.floatX), name='W')
    else:
        self.W = W
    if (b is None):
        self.b = theano.shared(value=numpy.zeros((n_out,), dtype=theano.config.floatX), name='b')
    else:
        self.b = b
    self.p_y_given_x = T.nnet.softmax((T.dot(input, self.W) + self.b))
    self.y_pred = T.argmax(self.p_y_given_x, axis=1)
    self.params = [self.W, self.b]
