'Adjusts the learning rate according to the linear decay schedule
Parameters
algorithm : WRITEME'

def __call__(self, algorithm):

    if (self._count == 0):
        self._base_lr = algorithm.learning_rate.get_value()
        self._step = ((self._base_lr - (self._base_lr * self.decay_factor)) / ((self.saturate - self.start) + 1))
    self._count += 1
    if (self._count >= self.start):
        if (self._count < self.saturate):
            new_lr = (self._base_lr - (self._step * ((self._count - self.start) + 1)))
        else:
            new_lr = (self._base_lr * self.decay_factor)
    else:
        new_lr = self._base_lr
    assert (new_lr > 0)
    new_lr = np.cast[config.floatX](new_lr)
    algorithm.learning_rate.set_value(new_lr)
