{"record":{"id":"5f6e0dd208b29ad4","repo":"keras-team/keras","slug":"received-value-range-value-range","errorCode":null,"errorMessage":"Received: value_range={value_range}","messagePattern":"Received: value_range=(.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/image_preprocessing/solarization.py","lineNumber":88,"sourceCode":"        threshold_factor=0.0,\n        value_range=(0, 255),\n        seed=None,\n        **kwargs,\n    ):\n        super().__init__(**kwargs)\n        self.seed = seed\n        self.generator = SeedGenerator(seed)\n        self.addition_factor = self._set_factor(\n            addition_factor, \"addition_factor\"\n        )\n        self.threshold_factor = self._set_factor(\n            threshold_factor, \"threshold_factor\"\n        )\n        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])","sourceCodeStart":70,"sourceCodeEnd":106,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/solarization.py#L70-L106","documentation":"Raised by Solarization's _set_value_range when `value_range` is not a tuple or list. The layer needs the min/max of the expected pixel value range (e.g. (0, 255) or (0.0, 1.0)) to scale the threshold; a scalar or string is rejected.","triggerScenarios":"Calling Solarization(value_range=255) or value_range=\"0-255\" — any non-sequence value.","commonSituations":"Passing a single max value instead of a (min, max) pair when adapting code from layers that take only a maximum; configs serializing the range as a string.","solutions":["Pass a 2-element tuple/list, e.g. value_range=(0, 255) for uint8 inputs or (0.0, 1.0) for normalized floats"],"exampleFix":"// before\nlayer = Solarization(value_range=255)\n// after\nlayer = Solarization(value_range=(0, 255))","handlingStrategy":"validation","validationCode":"assert isinstance(value_range, (tuple, list)) and len(value_range) == 2, 'value_range must be a (min, max) pair'","typeGuard":"def is_value_range(v):\n    return isinstance(v, (tuple, list)) and len(v) == 2 and all(isinstance(x, (int, float)) for x in v)","tryCatchPattern":"try:\n    layer = Solarization(value_range=vr)\nexcept ValueError:\n    raise ValueError('value_range must be like (0, 255) or (0.0, 1.0)')","preventionTips":["Always pass the full (min, max) pair matching your pixel scale","Derive it from your normalization step: (0, 255) for uint8, (0, 1) after Rescaling(1/255)"],"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"}