{"record":{"id":"6c862140fab040b9","repo":"keras-team/keras","slug":"unrecognized-value-for-merge-mode-received-se-6c8621","errorCode":null,"errorMessage":"Unrecognized value for `merge_mode`. Received: {self.merge_mode}. Expected one of {\"concat\", \"sum\", \"ave\", \"mul\"}.","messagePattern":"Unrecognized value for `merge_mode`\\. Received: (.+?)\\. Expected one of (.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/rnn/bidirectional.py","lineNumber":366,"sourceCode":"\n        y = ops.cast(y, self.compute_dtype)\n        y_rev = ops.cast(y_rev, self.compute_dtype)\n\n        # The fused backend helper already returns backward outputs in\n        # original time order, so the per-layer `ops.flip(y_rev)` that the\n        # non-fused path applies is unnecessary here.\n        if self.merge_mode == \"concat\":\n            output = ops.concatenate([y, y_rev], axis=-1)\n        elif self.merge_mode == \"sum\":\n            output = y + y_rev\n        elif self.merge_mode == \"ave\":\n            output = (y + y_rev) / 2\n        elif self.merge_mode == \"mul\":\n            output = y * y_rev\n        elif self.merge_mode is None:\n            output = (y, y_rev)\n        else:\n            raise ValueError(\n                \"Unrecognized value for `merge_mode`. \"\n                f\"Received: {self.merge_mode}. \"\n                'Expected one of {\"concat\", \"sum\", \"ave\", \"mul\"}.'\n            )\n\n        if self.return_state:\n            states = tuple(fwd_states + bwd_states)\n            if self.merge_mode is None:\n                return output + states\n            return (output,) + states\n        return output\n\n    def _can_attempt_fused_gru(self, mask, initial_state=None):\n        # Layer-level preconditions for dispatching to\n        # `backend.bidirectional_gru`. The structure matches the LSTM gate\n        # above. The only differences are the layer type, the\n        # `reset_after=True` requirement (the cuDNN GRU formulation), and\n        # the state count (one h per direction, so length 2).","sourceCodeStart":348,"sourceCodeEnd":384,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/rnn/bidirectional.py#L348-L384","documentation":"Error \"Unrecognized value for `merge_mode`. Received: {self.merge_mode}. Expected one of {\"concat\", \"sum\", \"ave\", \"mul\"}.\" thrown in keras-team/keras.","triggerScenarios":"Thrown at keras/src/layers/rnn/bidirectional.py:366 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"}