{"record":{"id":"3a9eeabf948529b6","repo":"keras-team/keras","slug":"validation-split-must-be-strictly-between-0-and","errorCode":null,"errorMessage":"`validation_split` must be strictly between 0 and 1.  Received: {validation_split}","messagePattern":"`validation_split` must be strictly between 0 and 1\\.  Received: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/legacy/preprocessing/image.py","lineNumber":1021,"sourceCode":"\n        if data_format not in {\"channels_last\", \"channels_first\"}:\n            raise ValueError(\n                '`data_format` should be `\"channels_last\"` '\n                \"(channel after row and column) or \"\n                '`\"channels_first\"` (channel before row and column). '\n                f\"Received: {data_format}\"\n            )\n        self.data_format = data_format\n        if data_format == \"channels_first\":\n            self.channel_axis = 1\n            self.row_axis = 2\n            self.col_axis = 3\n        if data_format == \"channels_last\":\n            self.channel_axis = 3\n            self.row_axis = 1\n            self.col_axis = 2\n        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 \"","sourceCodeStart":1003,"sourceCodeEnd":1039,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/legacy/preprocessing/image.py#L1003-L1039","documentation":"validation_split, when truthy, must be strictly between 0 and 1 (exclusive). 0, 1, negative values, or values >= 1 raise this error.","triggerScenarios":"ImageDataGenerator(validation_split=0), validation_split=1.0, validation_split=-0.2, or 100 (percent instead of fraction).","commonSituations":"Thinking 0/1 booleans; passing a percentage (20) instead of a fraction (0.2).","solutions":["Pass a fraction like 0.2 (0 < v < 1)","Omit validation_split entirely if no split is needed","If percentage in config, divide by 100 before constructing"],"exampleFix":"// before\nImageDataGenerator(validation_split=20)\n// after\nImageDataGenerator(validation_split=0.2)\n","handlingStrategy":"validation","validationCode":"assert validation_split is None or 0 < validation_split < 1, validation_split","typeGuard":"def valid_split(v): return v is None or (isinstance(v,(int,float)) and 0 < v < 1)","tryCatchPattern":"try: ImageDataGenerator(validation_split=vs)\nexcept ValueError as e: if 'validation_split' in str(e): vs = 0.2","preventionTips":["Store splits as fractions, never percentages"],"tags":["keras","validation-split","range-validation"],"backgroundTag":"argument-out-of-range","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}