{"record":{"id":"fc78e01fd3e60b82","repo":"keras-team/keras","slug":"received-factor-name-factor","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_translation.py","lineNumber":149,"sourceCode":"                f\"{self._SUPPORTED_FILL_MODE}.\"\n            )\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.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":131,"sourceCodeEnd":167,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/random_translation.py#L131-L167","documentation":"Raised by RandomTranslation's _set_factor when width_factor or height_factor is a tuple/list whose length is not 2. Translation factors must be a single number in [-1.0, 1.0] or a 2-element [lower, upper] pair.","triggerScenarios":"Calling RandomTranslation(height_factor=0.1, width_factor=[0.1]) or width_factor=(0.05, 0.1, 0.2) — any sequence with len != 2.","commonSituations":"Specifying per-axis ranges in config files and accidentally supplying one or three values; passing a 1-element list from a hyperparameter search.","solutions":["Pass a single fraction, e.g. width_factor=0.2 (means up to ±20%)","Pass exactly two values as bounds, e.g. width_factor=(0.05, 0.2)"],"exampleFix":"// before\nlayer = RandomTranslation(0.1, [0.1])\n// after\nlayer = RandomTranslation(0.1, (0.0, 0.1))","handlingStrategy":"validation","validationCode":"for name, f in ((\"height_factor\", h), (\"width_factor\", w)):\n    assert isinstance(f, (int, float)) or (isinstance(f, (tuple, list)) and len(f) == 2), name","typeGuard":"import numbers\ndef is_translation_factor(f):\n    return 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 = RandomTranslation(h, w)\nexcept ValueError as e:\n    raise ValueError(f\"Bad translation factors: h={h!r}, w={w!r}\") from e","preventionTips":["Validate range pairs have exactly two elements when loading from config","Prefer a single scalar for symmetric translation ranges"],"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"}