{"record":{"id":"f5de1d654c223929","repo":"keras-team/keras","slug":"the-name-argument-should-be-a-number-or-a-lis","errorCode":null,"errorMessage":"The `{name}` argument should be a number (or a list of two numbers) in the range [{self._FACTOR_BOUNDS[0]}, {self._FACTOR_BOUNDS[1]}]. Received: factor={factor}","messagePattern":"The `(.+?)` argument should be a number \\(or a list of two numbers\\) in the range \\[(.+?), (.+?)\\]\\. Received: factor=(.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/image_preprocessing/random_elastic_transform.py","lineNumber":137,"sourceCode":"            self.height_axis = -2\n            self.width_axis = -1\n            self.channel_axis = -3\n        else:\n            self.height_axis = -3\n            self.width_axis = -2\n            self.channel_axis = -1\n\n    def _set_factor_by_name(self, factor, name):\n        error_msg = (\n            f\"The `{name}` argument should be a number \"\n            \"(or a list of two numbers) \"\n            \"in the range \"\n            f\"[{self._FACTOR_BOUNDS[0]}, {self._FACTOR_BOUNDS[1]}]. \"\n            f\"Received: factor={factor}\"\n        )\n        if isinstance(factor, (tuple, list)):\n            if len(factor) != 2:\n                raise ValueError(error_msg)\n            if (\n                factor[0] > self._FACTOR_BOUNDS[1]\n                or factor[1] < self._FACTOR_BOUNDS[0]\n            ):\n                raise ValueError(error_msg)\n            lower, upper = sorted(factor)\n        elif isinstance(factor, (int, float)):\n            if (\n                factor < self._FACTOR_BOUNDS[0]\n                or factor > self._FACTOR_BOUNDS[1]\n            ):\n                raise ValueError(error_msg)\n            factor = abs(factor)\n            lower, upper = [max(-factor, self._FACTOR_BOUNDS[0]), factor]\n        else:\n            raise ValueError(error_msg)\n        return lower, upper\n","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/random_elastic_transform.py#L119-L155","documentation":"RandomElasticTransform normalizes its factor argument (e.g. alpha) via _set_factor_by_name. A factor may be a single number or exactly a two-element sequence giving lower and upper bounds; the sequence form must have len == 2. This ValueError fires when a sequence of any other length is passed.","triggerScenarios":"factor=[0.1, 0.2, 0.3] (three entries), factor=[0.2] (single-element list), or an empty list factor=[].","commonSituations":"Reusing a config list meant for per-channel or per-parameter ranges; wrapping the factor in an extra list when loading from JSON/YAML (e.g. [[0.1, 0.2]]); hyperparameter-sweep code that emits variable-length lists.","solutions":["Pass a 2-element list [lower, upper], e.g. factor=[0.1, 0.5]","Or pass a single number, e.g. factor=0.3","Flatten doubly-nested config values before constructing the layer"],"exampleFix":"# before\nlayers.RandomElasticTransform(alpha_factor=[0.2])\n# after\nlayers.RandomElasticTransform(alpha_factor=[0.0, 0.2])","handlingStrategy":"validation","validationCode":"def normalize_factor(v):\n    if isinstance(v, (tuple, list)):\n        if len(v) != 2:\n            raise ValueError(\"factor sequence must have exactly 2 elements\")\n        return list(v)\n    return v","typeGuard":"def is_factor_pair(v) -> bool:\n    return isinstance(v, (tuple, list)) and len(v) == 2","tryCatchPattern":"try:\n    layer = RandomElasticTransform(alpha_factor=f)\nexcept ValueError:\n    f = [0.0, 0.5]\n    layer = RandomElasticTransform(alpha_factor=f)","preventionTips":["Centralize factor normalization in one helper","Unit-test config parsing for list lengths"],"tags":["keras","preprocessing","argument-validation","factor-range"],"backgroundTag":"argument-shape-validation","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}