{"record":{"id":"6f13822dd43cf077","repo":"keras-team/keras","slug":"received-input-number-input-number-6f1382","errorCode":null,"errorMessage":"Received: input_number={input_number}","messagePattern":"Received: input_number=(.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/image_preprocessing/random_zoom.py","lineNumber":171,"sourceCode":"                    + 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            factor = abs(factor)\n            lower, upper = [-factor, 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 <= -1.0:\n            raise ValueError(\n                self._FACTOR_VALIDATION_ERROR\n                + f\"Received: input_number={input_number}\"\n            )\n\n    def _transform_images(self, images, transformation, interpolation):\n        return self._zoom_inputs(images, transformation, interpolation)\n\n    def transform_labels(self, labels, transformation, training=True):\n        return labels\n\n    def get_transformed_x_y(self, x, y, transform):\n        a0, a1, a2, b0, b1, b2, c0, c1 = self.backend.numpy.split(\n            transform, 8, axis=-1\n        )\n\n        k = c0 * x + c1 * y + 1\n        x_transformed = (a0 * x + a1 * y + a2) / k\n        y_transformed = (b0 * x + b1 * y + b2) / k","sourceCodeStart":153,"sourceCodeEnd":189,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/random_zoom.py#L153-L189","documentation":"Raised by RandomZoom's _check_factor_range when a zoom factor is greater than 1.0 or <= -1.0. The range is asymmetric: a lower bound of exactly -1.0 is rejected because a zoom factor of -1.0 would collapse the image to nothing, while +1.0 is allowed.","triggerScenarios":"Calling RandomZoom(height_factor=(-1.0, 0.5)) or RandomZoom(2.0).","commonSituations":"Assuming symmetric ±1 bounds like RandomTranslation; passing percent values (e.g. 20 for 20%).","solutions":["Keep factors in (-1.0, 1.0], e.g. RandomZoom(0.2) for up to ±20% zoom","Convert percentages: divide by 100"],"exampleFix":"// before\nlayer = RandomZoom(height_factor=20)  // meant 20%\n// after\nlayer = RandomZoom(height_factor=0.2)","handlingStrategy":"validation","validationCode":"vals = f if isinstance(f, (tuple, list)) else [f]\nassert all(-1.0 < x <= 1.0 for x in vals), 'zoom factors must be in (-1.0, 1.0]'","typeGuard":"def in_zoom_range(x):\n    return isinstance(x, (int, float)) and -1.0 < x <= 1.0","tryCatchPattern":"try:\n    layer = RandomZoom(h, w)\nexcept ValueError:\n    h = max(-0.99, min(1.0, h / 100)) if abs(h) > 1 else h\n    layer = RandomZoom(h, w)","preventionTips":["Divide percentages by 100 before passing","Note the asymmetric bound: -1.0 is rejected but +1.0 is allowed"],"tags":["keras","preprocessing","range-validation","augmentation"],"backgroundTag":"argument-out-of-range","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}