code: def get_value_to_set(self):
          
          ret = self._get_value_to_set()
          if ret is not None and ret != self._last_value:
              if self.epoch_num != self._last_epoch_set:  # Print this message at most once every epoch
                  if self._last_value is None:
                      logger.info("[HyperParamSetter] At global_step={}, {} is set to {:.6f}".format(
                          self.global_step, self.param.readable_name, ret))
                  else:
                      logger.info("[HyperParamSetter] At global_step={}, {} changes from {:.6f} to {:.6f}".format(
                          self.global_step, self.param.readable_name, self._last_value, ret))
              self._last_epoch_set = self.epoch_num
              self._last_value = ret
          return ret
docs: 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.