code: def set_hparam(self, name, value):
      
      param_type, is_list = self._hparam_types[name]
      if isinstance(value, list):
        if not is_list:
          raise ValueError(
              'Must not pass a list for single-valued parameter: %s' % name)
        setattr(self, name, [
            _cast_to_type_if_compatible(name, param_type, v) for v in value])
      else:
        if is_list:
          raise ValueError(
              'Must pass a list for multi-valued parameter: %s.' % name)
        setattr(self, name, _cast_to_type_if_compatible(name, param_type, value))
docs: Set the value of an existing hyperparameter.
  
      This function verifies that the type of the value matches the type of the
      existing hyperparameter.
  
      Args:
        name: Name of the hyperparameter.
        value: New value of the hyperparameter.
  
      Raises:
        KeyError: If the hyperparameter doesn't exist.
        ValueError: If there is a type mismatch.