'Returns the current learning rate given the epoch and initial learning rate.
Arguments:
learning_rate (float): Initial learning rate
epoch (int): Current epoch, used to calculate the adjusted learning rate
Returns:
(float): The adjusted learning rate'

def get_learning_rate(self, learning_rate, epoch):

    if (isinstance(self.step_config, list) and isinstance(self.change, list)):
        if (epoch in self.step_config):
            self.steps = self.change[self.step_config.index(epoch)]
        if (self.steps == 0):
            return learning_rate
        else:
            return self.steps
    elif isinstance(self.step_config, int):
        self.steps = np.floor((epoch / self.step_config))
    elif isinstance(self.step_config, list):
        self.steps = np.sum((epoch >= np.array(self.step_config)))
    return float((learning_rate * (self.change ** self.steps)))
