{"record":{"id":"f7558e5836252485","repo":"keras-team/keras","slug":"zoom-range-should-be-a-float-or-a-tuple-or-list","errorCode":null,"errorMessage":"`zoom_range` should be a float or a tuple or list of two floats. Received: {zoom_range}","messagePattern":"`zoom_range` should be a float or a tuple or list of two floats\\. Received: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/legacy/preprocessing/image.py","lineNumber":1038,"sourceCode":"        if validation_split and not 0 < validation_split < 1:\n            raise ValueError(\n                \"`validation_split` must be strictly between 0 and 1. \"\n                f\" Received: {validation_split}\"\n            )\n        self._validation_split = validation_split\n\n        self.mean = None\n        self.std = None\n        self.zca_whitening_matrix = None\n\n        if isinstance(zoom_range, (float, int)):\n            self.zoom_range = [1 - zoom_range, 1 + zoom_range]\n        elif len(zoom_range) == 2 and all(\n            isinstance(val, (float, int)) for val in zoom_range\n        ):\n            self.zoom_range = [zoom_range[0], zoom_range[1]]\n        else:\n            raise ValueError(\n                \"`zoom_range` should be a float or \"\n                \"a tuple or list of two floats. \"\n                f\"Received: {zoom_range}\"\n            )\n        if zca_whitening:\n            if not featurewise_center:\n                self.featurewise_center = True\n                warnings.warn(\n                    \"This ImageDataGenerator specifies \"\n                    \"`zca_whitening`, which overrides \"\n                    \"setting of `featurewise_center`.\"\n                )\n            if featurewise_std_normalization:\n                self.featurewise_std_normalization = False\n                warnings.warn(\n                    \"This ImageDataGenerator specifies \"\n                    \"`zca_whitening` \"\n                    \"which overrides setting of\"","sourceCodeStart":1020,"sourceCodeEnd":1056,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/legacy/preprocessing/image.py#L1020-L1056","documentation":"ImageDataGenerator zoom_range must be a single float/int (symmetric [1-z, 1+z]) or a sequence of exactly two numbers. Anything else (1 number in a list, 3 elements, strings) is rejected.","triggerScenarios":"ImageDataGenerator(zoom_range=[0.2]) or zoom_range=[0.8,1.2,1.5] or zoom_range='0.2'.","commonSituations":"Config file parses zoom_range as a string; partial copy of a 2-element example.","solutions":["Use a float: zoom_range=0.2, or a 2-element list [0.8, 1.2]","Parse config values into float/list before passing","Order matters: [lower, upper]"],"exampleFix":"// before\nzoom_range=[0.2]\n// after\nzoom_range=[0.8, 1.2]\n","handlingStrategy":"validation","validationCode":"import numbers\nok = isinstance(zoom_range,(int,float)) or (isinstance(zoom_range,(list,tuple)) and len(zoom_range)==2 and all(isinstance(v,(int,float)) for v in zoom_range))\nassert ok, zoom_range","typeGuard":"def zoom_ok(z): return isinstance(z,(int,float)) or (isinstance(z,(list,tuple)) and len(z)==2)","tryCatchPattern":"try: ImageDataGenerator(zoom_range=z)\nexcept ValueError as e: if 'zoom_range' in str(e): z = [0.8, 1.2]","preventionTips":["Validate augmentation config dicts once at load"],"tags":["keras","data-augmentation","argument-validation"],"backgroundTag":"invalid-argument-value","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}