{"record":{"id":"3688e92e35ff0936","repo":"keras-team/keras","slug":"the-input-input-name-is-not-optional-but-none","errorCode":null,"errorMessage":"The input '{input_name}' is not optional, but None was passed. Please provide a valid tensor.","messagePattern":"The input '(.+?)' is not optional, but None was passed\\. Please provide a valid tensor\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/models/functional.py","lineNumber":274,"sourceCode":"    def _convert_inputs_to_tensors(self, flat_inputs):\n        converted = []\n        for x, input_tensor in zip(flat_inputs, self._inputs):\n            if x is None:\n                # Only enforce optional semantics when the input tensor was\n                # created by an `InputLayer`. For other kinds of tensors\n                # (e.g. tensors produced dynamically) preserve previous\n                # behavior and allow None to pass through.\n                input_layer = None\n                if (\n                    hasattr(input_tensor, \"_keras_history\")\n                    and input_tensor._keras_history\n                ):\n                    input_layer = input_tensor._keras_history.operation\n\n                if isinstance(input_layer, InputLayer):\n                    if not input_layer.optional:\n                        input_name = input_tensor.name\n                        raise ValueError(\n                            (\n                                f\"The input '{input_name}' is not optional, \"\n                                \"but None was passed. \"\n                                \"Please provide a valid tensor.\"\n                            )\n                        )\n                # If input_layer is not an InputLayer, fall back to previous\n                # behavior and accept None.\n                converted.append(x)\n            else:\n                converted.append(\n                    ops.convert_to_tensor(\n                        x,\n                        dtype=input_tensor.dtype,\n                        sparse=input_tensor.sparse,\n                    )\n                )\n        return converted","sourceCodeStart":256,"sourceCodeEnd":292,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/models/functional.py#L256-L292","documentation":"Error \"The input '{input_name}' is not optional, but None was passed. Please provide a valid tensor.\" thrown in keras-team/keras.","triggerScenarios":"Thrown at keras/src/models/functional.py:274 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}