'Returns:
The value to assign to the variable.
Note:
Subclasses will implement the abstract method
:meth:`_get_value_to_set`, which should return a new value to
set, or return None to do nothing.'

def get_value_to_set(self):

    ret = self._get_value_to_set()
    if ((ret is not None) and (ret != self.last_value)):
        logger.info('{}    at    epoch    {}    will    change    to    {:.8f}'.format(self.param.readable_name, (self.epoch_num + 1), ret))
    self.last_value = ret
    return ret
