{"record":{"id":"9f318867da0c3e22","repo":"keras-team/keras","slug":"self-value-range-validation-error-f-received-v-9f3188","errorCode":null,"errorMessage":"self._VALUE_RANGE_VALIDATION_ERROR + f\"Received: value_range={value_range}\"","messagePattern":"self\\._VALUE_RANGE_VALIDATION_ERROR \\+ f\"Received: value_range=(.+?)\"","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/image_preprocessing/random_brightness.py","lineNumber":79,"sourceCode":"               [[32.5, 33.5, 34.5]\n                [35.5, 36.5, 37.5]]],\n              shape=(2, 2, 3), dtype=int64)\n    ```\n    \"\"\"\n\n    _VALUE_RANGE_VALIDATION_ERROR = (\n        \"The `value_range` argument should be a list of two numbers. \"\n    )\n\n    def __init__(self, factor, value_range=(0, 255), seed=None, **kwargs):\n        super().__init__(factor=factor, **kwargs)\n        self.seed = seed\n        self.generator = SeedGenerator(seed)\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 get_random_transformation(self, data, training=True, seed=None):\n        if isinstance(data, dict):\n            images = data[\"images\"]\n        else:\n            images = data\n        images_shape = self.backend.shape(images)\n        rank = len(images_shape)\n        if rank == 3:","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/random_brightness.py#L61-L97","documentation":"RandomBrightness requires value_range to be a tuple or list of two numbers describing the valid pixel range of the inputs. Passing a scalar, None, or string raises this ValueError from _set_value_range during layer construction.","triggerScenarios":"layers.RandomBrightness(factor=0.5, value_range=255) or value_range=None.","commonSituations":"Porting augmentation code from APIs that take a single max; assuming a default range exists; float images in [0,1] without declaring (0, 1).","solutions":["Pass value_range=(0, 255) for uint8-scaled images or (0, 1) for float images","Apply Rescaling(1/255) before and use (0, 1) consistently"],"exampleFix":"# before\nlayer = keras.layers.RandomBrightness(factor=0.2, value_range=255)\n# after\nlayer = keras.layers.RandomBrightness(factor=0.2, value_range=(0, 255))","handlingStrategy":"type-guard","validationCode":"if not isinstance(value_range, (tuple, list)):\n    value_range = (0, value_range) if isinstance(value_range, (int, float)) else (0, 255)","typeGuard":"def is_valid_value_range(v):\n    return isinstance(v, (tuple, list)) and len(v) == 2","tryCatchPattern":null,"preventionTips":["Prefer (0, 1) everywhere by adding Rescaling(1/255) first; declare value_range=(0, 1) on all augmentation layers"],"tags":["keras","random-brightness","value-range","constructor-validation"],"backgroundTag":"invalid-constructor-argument","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}