    def set_hparam(self, name, value):
        """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.
        """
        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))
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.
utils/hparam.py