{"record":{"id":"fe57bf8e636c48b0","repo":"keras-team/keras","slug":"received-factor-name-factor-fe57bf","errorCode":null,"errorMessage":"Received: {factor_name}={factor}","messagePattern":"Received: (.+?)=(.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/image_preprocessing/solarization.py","lineNumber":102,"sourceCode":"        self._set_value_range(value_range)\n\n    def _set_value_range(self, value_range):\n        if not isinstance(value_range, (tuple, list)):\n            raise ValueError(\n                self._VALUE_RANGE_VALIDATION_ERROR\n                + f\"Received: value_range={value_range}\"\n            )\n        if len(value_range) != 2:\n            raise ValueError(\n                self._VALUE_RANGE_VALIDATION_ERROR\n                + f\"Received: value_range={value_range}\"\n            )\n        self.value_range = sorted(value_range)\n\n    def _set_factor(self, factor, factor_name):\n        if isinstance(factor, (tuple, list)):\n            if len(factor) != 2:\n                raise ValueError(\n                    self._FACTOR_VALIDATION_ERROR\n                    + f\"Received: {factor_name}={factor}\"\n                )\n            self._check_factor_range(factor[0])\n            self._check_factor_range(factor[1])\n            lower, upper = sorted(factor)\n        elif isinstance(factor, (int, float)):\n            self._check_factor_range(factor)\n            lower, upper = [0, factor]\n        else:\n            raise ValueError(\n                self._FACTOR_VALIDATION_ERROR\n                + f\"Received: {factor_name}={factor}\"\n            )\n        return lower, upper\n\n    def _check_factor_range(self, input_number):\n        if input_number > 1.0 or input_number < 0:","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/solarization.py#L84-L120","documentation":"Raised by Solarization's _set_factor when `threshold_factor` is a sequence whose length is not 2. The threshold must be a single value in [0, 1] or a [lower, upper] pair (given as fractions of the value range; negative or None values disable thresholding).","triggerScenarios":"Calling Solarization(threshold_factor=[0.2, 0.5, 0.8]) or (0.5,).","commonSituations":"Hyperparameter sweeps emitting variable-length lists; adapting a 3-value threshold schedule.","solutions":["Pass a single fraction, e.g. threshold_factor=0.5","Pass exactly two bounds, e.g. threshold_factor=(0.2, 0.8)"],"exampleFix":"// before\nlayer = Solarization(value_range=(0, 255), threshold_factor=[0.2, 0.5, 0.8])\n// after\nlayer = Solarization(value_range=(0, 255), threshold_factor=(0.2, 0.8))","handlingStrategy":"validation","validationCode":"tf = threshold_factor\nassert isinstance(tf, (int, float)) or (isinstance(tf, (tuple, list)) and len(tf) == 2), 'bad threshold_factor'","typeGuard":"import numbers\ndef is_threshold_factor(v):\n    return isinstance(v, numbers.Number) or (isinstance(v, (tuple, list)) and len(v) == 2 and all(isinstance(x, numbers.Number) for x in v))","tryCatchPattern":"try:\n    layer = Solarization(value_range=(0, 255), threshold_factor=tf)\nexcept ValueError as e:\n    raise ValueError(f\"Invalid threshold_factor {tf!r}\") from e","preventionTips":["Keep threshold as a single fraction unless a random range is intended","Validate sweep-generated lists before layer construction"],"tags":["keras","preprocessing","validation","augmentation"],"backgroundTag":"constructor-argument-validation","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}