class_docstr: An abstract base callback to set hyperparameters.
  
  Once the :meth:`trigger()` method is called,
  the method :meth:`_get_value_to_set` will be used to get a new value for the hyperparameter.
docstr: 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.
docstr_tok: ["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","."]
code: def get_value_to_set(self):
      """
      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.
      """
      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
  
imports: import operator
  import os
  import numpy
  from abc import ABCMeta, abstractmethod
  from collections import deque
  import six
  from ..compat import tfv1
  from ..tfutils.common import get_op_tensor_name
  from ..utils import logger
  from .base import Callback
label_desc: Use image node_id 3 for calling the HyperParamSetter obj's underlying member method code with example usage: obj.get_value_to_set() and returns: ret