in src/python/tensorflow_cloud/tuner/utils.py [0:0]
def _is_parameter_valid(param: Dict[Text, Any]):
"""Checks if study_config parameter is valid."""
if not param.get("parameter"):
raise ValueError('"parameter" (name) is not specified.')
if not param.get("type"):
raise ValueError("Parameter {} type is not specified.".format(param))
if param["type"] == _DISCRETE:
if not param.get("discrete_value_spec"):
raise ValueError(
"Parameter {} is missing discrete_value_spec.".format(param)
)
if not isinstance(param["discrete_value_spec"].get("values"), list):
raise ValueError(
'Parameter spec {} is missing "values".'.format(
param["discrete_value_spec"]
)
)
elif param["type"] == _CATEGORICAL:
if not param.get("categorical_value_spec"):
raise ValueError(
"Parameter {} is missing categorical_value_spec.".format(param)
)
if not isinstance(param["categorical_value_spec"].get("values"), list):
raise ValueError(
'Parameter spec {} is missing "values".'.format(
param["categorical_value_spec"]
)
)
elif param["type"] == _DOUBLE:
if not param.get("double_value_spec"):
raise ValueError(
"Parameter {} is missing double_value_spec.".format(param))
spec = param["double_value_spec"]
if not (
isinstance(spec.get("min_value"), float)
and isinstance(spec.get("max_value"), float)
):
raise ValueError(
'Parameter spec {} requires both "min_value" and '
'"max_value".'.format(spec)
)
elif param["type"] == _INTEGER:
if not param.get("integer_value_spec"):
raise ValueError(
"Parameter {} is missing integer_value_spec.".format(param)
)
spec = param["integer_value_spec"]
if not (
isinstance(spec.get("min_value"), int)
and isinstance(spec.get("max_value"), int)
):
raise ValueError(
'Parameter spec {} requires both "min_value" and '
'"max_value".'.format(spec)
)
else:
raise ValueError("Unknown parameter type: {}.".format(param["type"]))