{"record":{"id":"b48a2e3849314109","repo":"keras-team/keras","slug":"unknown-interpolation-interpolation-expected","errorCode":null,"errorMessage":"Unknown `interpolation` {interpolation}. Expected of one {self._SUPPORTED_INTERPOLATION}.","messagePattern":"Unknown `interpolation` (.+?)\\. Expected of one (.+?)\\.","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/image_preprocessing/random_elastic_transform.py","lineNumber":107,"sourceCode":"        fill_mode=\"reflect\",\n        fill_value=0.0,\n        value_range=(0, 255),\n        seed=None,\n        data_format=None,\n        **kwargs,\n    ):\n        super().__init__(data_format=data_format, **kwargs)\n        self._set_factor(factor)\n        self.scale = self._set_factor_by_name(scale, \"scale\")\n        self.interpolation = interpolation\n        self.fill_mode = fill_mode\n        self.fill_value = fill_value\n        self.value_range = value_range\n        self.seed = seed\n        self.generator = SeedGenerator(seed)\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        if fill_mode not in self._SUPPORTED_FILL_MODES:\n            raise NotImplementedError(\n                f\"Unknown `fill_mode` {fill_mode}. Expected of one \"\n                f\"{self._SUPPORTED_FILL_MODES}.\"\n            )\n\n        if self.data_format == \"channels_first\":\n            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","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/random_elastic_transform.py#L89-L125","documentation":"RandomElasticTransform validates its interpolation argument in __init__ against the fixed set stored in _SUPPORTED_INTERPOLATION. An unsupported string raises NotImplementedError immediately at construction, so an augmentation that cannot be realized never reaches training. The supported values are those enumerated by the layer (e.g. 'nearest' and 'bilinear').","triggerScenarios":"Constructing layers.RandomElasticTransform(interpolation=...) with a misspelled or unsupported string, e.g. interpolation='bicubic', interpolation='Bilinear' (case matters), or interpolation='linear'.","commonSituations":"Copying interpolation names from other frameworks (PyTorch/torchvision or tf.image use different vocabularies such as 'bicubic'); upgrading Keras versions where the accepted set changed; assuming case-insensitive matching.","solutions":["Use one of the exact strings in RandomElasticTransform._SUPPORTED_INTERPOLATION, typically 'nearest' or 'bilinear'","Print the supported set first: print(layers.RandomElasticTransform._SUPPORTED_INTERPOLATION)","If you need 'bicubic', pick a layer that supports it or implement a custom transform outside this layer"],"exampleFix":"# before\nlayers.RandomElasticTransform(interpolation=\"bicubic\")\n# after\nlayers.RandomElasticTransform(interpolation=\"bilinear\")","handlingStrategy":"validation","validationCode":"from keras.src.layers.preprocessing.image_preprocessing.random_elastic_transform import RandomElasticTransform\ninterp = \"bilinear\"\nassert interp in RandomElasticTransform._SUPPORTED_INTERPOLATION, f\"use one of {RandomElasticTransform._SUPPORTED_INTERPOLATION}\"","typeGuard":"def is_valid_interpolation(v: str) -> bool:\n    return v in {\"nearest\", \"bilinear\"}","tryCatchPattern":"try:\n    layer = RandomElasticTransform(interpolation=interp)\nexcept NotImplementedError as e:\n    raise ValueError(f\"bad interpolation {interp!r}: {e}\") from e","preventionTips":["Pin interpolation vocabulary to the layer's _SUPPORTED_INTERPOLATION constant","Add config schema validation when values come from YAML/JSON"],"tags":["keras","preprocessing","argument-validation","enum"],"backgroundTag":"invalid-enum-argument","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}