{"record":{"id":"d8290f5c3922691b","repo":"keras-team/keras","slug":"when-using-stateful-true-in-a-rnn-the-batch-siz","errorCode":null,"errorMessage":"When using `stateful=True` in a RNN, the batch size must be static. Found dynamic batch size: sequence.shape={sequences_shape}","messagePattern":"When using `stateful=True` in a RNN, the batch size must be static\\. Found dynamic batch size: sequence\\.shape=(.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/rnn/rnn.py","lineNumber":281,"sourceCode":"        output_mask = mask if self.return_sequences else None\n        if self.return_state:\n            state_mask = [None for _ in self.state_size]\n            return [output_mask] + state_mask\n        else:\n            return output_mask\n\n    def build(self, sequences_shape, initial_state_shape=None):\n        # Build cell (if layer).\n        step_input_shape = (sequences_shape[0],) + tuple(sequences_shape[2:])\n        if isinstance(self.cell, Layer) and not self.cell.built:\n            self.cell.build(step_input_shape)\n            self.cell.built = True\n        if self.stateful:\n            if self.states is not None:\n                self.reset_state()\n            else:\n                if sequences_shape[0] is None:\n                    raise ValueError(\n                        \"When using `stateful=True` in a RNN, the \"\n                        \"batch size must be static. Found dynamic \"\n                        f\"batch size: sequence.shape={sequences_shape}\"\n                    )\n                self._create_state_variables(sequences_shape[0])\n                self._expected_batch_size = ops.shape(\n                    tree.flatten(self.states)[0]\n                )[0]\n\n    @tracking.no_automatic_dependency_tracking\n    def _create_state_variables(self, batch_size):\n        with backend.name_scope(self.name, caller=self):\n            self.states = tree.map_structure(\n                lambda value: backend.Variable(\n                    value,\n                    trainable=False,\n                    dtype=self.variable_dtype,\n                    name=\"rnn_state\",","sourceCodeStart":263,"sourceCodeEnd":299,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/rnn/rnn.py#L263-L299","documentation":"Error \"When using `stateful=True` in a RNN, the batch size must be static. Found dynamic batch size: sequence.shape={sequences_shape}\" thrown in keras-team/keras.","triggerScenarios":"Thrown at keras/src/layers/rnn/rnn.py:281 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"}