keras-team/keras · error · ValueError
When using `stateful=True` in a RNN, the batch size must be
Error message
When using `stateful=True` in a RNN, the batch size must be static. Found dynamic batch size: sequence.shape={sequences_shape} What it means
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.
Source
Thrown at keras/src/layers/rnn/rnn.py:281
output_mask = mask if self.return_sequences else None
if self.return_state:
state_mask = [None for _ in self.state_size]
return [output_mask] + state_mask
else:
return output_mask
def build(self, sequences_shape, initial_state_shape=None):
# Build cell (if layer).
step_input_shape = (sequences_shape[0],) + tuple(sequences_shape[2:])
if isinstance(self.cell, Layer) and not self.cell.built:
self.cell.build(step_input_shape)
self.cell.built = True
if self.stateful:
if self.states is not None:
self.reset_state()
else:
if sequences_shape[0] is None:
raise ValueError(
"When using `stateful=True` in a RNN, the "
"batch size must be static. Found dynamic "
f"batch size: sequence.shape={sequences_shape}"
)
self._create_state_variables(sequences_shape[0])
self._expected_batch_size = ops.shape(
tree.flatten(self.states)[0]
)[0]
@tracking.no_automatic_dependency_tracking
def _create_state_variables(self, batch_size):
with backend.name_scope(self.name, caller=self):
self.states = tree.map_structure(
lambda value: backend.Variable(
value,
trainable=False,
dtype=self.variable_dtype,
name="rnn_state",View on GitHub (pinned to 7a34a03db6)
When it happens
Trigger: Thrown at keras/src/layers/rnn/rnn.py:281 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of keras-team/keras@7a34a03db6 (2026-08-25).
Data as JSON: /api/errors/d8290f5c3922691b.
Report an issue: GitHub.