{"record":{"id":"26de071c2dc2de62","repo":"keras-team/keras","slug":"received-factor-name-factor-26de07","errorCode":null,"errorMessage":"Received: {factor_name}={factor}","messagePattern":"Received: (.+?)=(.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/image_preprocessing/random_zoom.py","lineNumber":151,"sourceCode":"            )\n        if interpolation not in self._SUPPORTED_INTERPOLATION:\n            raise NotImplementedError(\n                f\"Unknown `interpolation` {interpolation}. Expected of one \"\n                f\"{self._SUPPORTED_INTERPOLATION}.\"\n            )\n\n        self.fill_mode = fill_mode\n        self.fill_value = fill_value\n        self.interpolation = interpolation\n        self.seed = seed\n        self.generator = SeedGenerator(seed)\n        self.data_format = backend.standardize_data_format(data_format)\n        self.supports_jit = False\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])\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):","sourceCodeStart":133,"sourceCodeEnd":169,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/random_zoom.py#L133-L169","documentation":"Raised by RandomZoom's _set_factor when height_factor or width_factor is a sequence whose length is not 2. Zoom factors must be a single positive fraction or a [lower, upper] pair; a zoom factor of 1.0 or more on the lower bound is invalid because it would mean no zoom or magnification beyond the input.","triggerScenarios":"Calling RandomZoom(height_factor=[0.1, 0.2, 0.3]) or width_factor=(0.2,).","commonSituations":"Config-driven augmentation pipelines producing variable-length lists; merging height/width ranges incorrectly.","solutions":["Pass a single fraction, e.g. RandomZoom(0.2)","Pass exactly two bounds, e.g. RandomZoom(height_factor=(0.1, 0.3))"],"exampleFix":"// before\nlayer = RandomZoom(height_factor=[0.1, 0.2, 0.3])\n// after\nlayer = RandomZoom(height_factor=(0.1, 0.3))","handlingStrategy":"validation","validationCode":"for name, f in ((\"height_factor\", h), (\"width_factor\", w)):\n    if f is not None:\n        assert isinstance(f, (int, float)) or (isinstance(f, (tuple, list)) and len(f) == 2), name","typeGuard":"import numbers\ndef is_zoom_factor(f):\n    return f is None or isinstance(f, numbers.Number) or (isinstance(f, (tuple, list)) and len(f) == 2 and all(isinstance(x, numbers.Number) for x in f))","tryCatchPattern":"try:\n    layer = RandomZoom(h, w)\nexcept ValueError as e:\n    raise ValueError(f\"Bad zoom factors: h={h!r}, w={w!r}\") from e","preventionTips":["Validate list lengths in config-driven augmentation stacks","Remember zoom factors are fractions, not percents"],"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"}