## keras-team/keras — v3.13.2…v3.14.0

_389+ commits._

### Features
- **Add cuDNN LSTM for JAX backend (#22399)** (b0ec1b6)
- **feat: add siphash hashing for indexlookup (#22497)** (c51d41b)
- **Support iterables in adapt() for preprocessing layers (#22417)** (6ba37bb)
- **add automated-issue triage (#22572)** (4181dac)
- **Add delay before removing `kokoro:force-run` label. (#22507)** (014a571)
- **Add fliplr and flipud numpy ops (#22426)** (12d4a94)
- **Add i0 (modified Bessel function) numpy op (#22427)** (486ffbf)
- **Add rad2deg to keras.ops.numpy (#22419)** (4c32915)
- **[Keras 3 OpenVINO Backend]: Improve support for `unstack` operations (#22422)** (4d047a8)
- **[OpenVINO backend] Support for  nanargmax and nanargmin  (#22383)** (572f361)
- **[OpenVINO backend] Support for numpy.eigh  (#22363)** (85c64dd)
- **Add splines argument to plot_model and model_to_dot (#22277)** (b37b35b)
- **[OpenVINO backend] Support for numpy.det using Faddeev-LeVerrier algorithm (#22355)** (c35bf2e)
- **[OpenVINO backend] Support numpy.power and numpy.vectorize (#22404)** (7697e91)
- **Add optional Gated Attention (#22372)** (71653a1)
- **Add fmod to keras.ops.numpy (#22369)** (0a5c10a)
- **[OpenVINO backend] Support `beta` operation (#22285)** (d8e68b0)
- **[OpenVINO backend] Add slogdet support using LU decomposition with partial pivoting  (#22388)** (f16c2c9)
- **Add sinc to keras.ops.numpy (#22365)** (e65cfb8)
- **Add nancumprod to keras.ops.numpy (#22364)** (e4834f6)
- **Add `tensorboard` as an explicit dependency. (#22376)** (7598c3e)
- **Add `CLAHE` preprocessing layer (#21953)** (91a9006)

### Fixes
- **Keras Automations : Refine auto fix to add unit tests (#22624)** (050671c)
- **Keras Automations:  Refine Auto fix (#22623)** (05bbdae)
- **Keras Automations: Auto fix improve (#22613)** (b8ba027)
- **Keras automation: fix label name (#22611)** (d1e5f1c)
- **auto fix updates (#22610)** (a44d76e)
- **Fix TPU test broken in master. (#22605)** (838b7e3)
- **[Fix] MelSpectrogram skips fft_length >= sequence_length validation for symbolic Keras inputs (#22549)** (6c5956d)
- **[OpenVINO] Fix float16 dtype promotion in OpenVINOKerasTensor binary operators (#22602)** (99dda4c)
- **[OpenVINO] Fix arange to use Numpy semantics (#22599)** (49d818e)
- **Fix device string assertion to use correct case per backend (#22601)** (791693b)
- **Fix workflow concurrency for tests. (#22597)** (28a83c5)
- **fix(ops): correct quantile/nanquantile symbolic shape for list q values (#22590)** (48d9059)
- **Fix cross output shape for symbolic inputs (#22587)** (49454f1)
- **Fix order of arguments was calling `assertAllClose`. (#22569)** (d012094)
- **[BUG] keras.ops.istft returns inconsistent output shapes for eager tensors vs. Keras Input (#22565)** (b9af4d9)
- **[BUG] keras.ops.argmin returns incorrect shape for Keras Input when keepdims=True (#22563)** (6c31a06)
- **[Fix] keras.ops.flip fails for eager tensors when axis is a list of axes (#22548)** (ec4fde5)
- **Fix conversion to NumPy in `TestCase` for `assertAllClose`. (#22594)** (9b80f83)
- **fix: pin 4 unpinned action(s) (#22555)** (cff7c7d)
- **Fix KeyError in model.summary() when a layer returns a dict (#22505)** (ea24ee3)
- **[Bug] `keras.ops.argmax` returns incorrect shape for Keras Input when `keepdims=True` (#22524)** (e81d859)
- **[Fix] keras.ops.blackman returns NaN for window length 1 (#22545)** (b2c24fa)
- **Fix: Resolve infinite recursion in keras.ops.associative_scan under Tensorflow static graph mode (#22072)** (76e271c)
- **[Fix] TextVectorization fails on G4 on Colab (all fine on H100, or A100 and earlier) (#22465)** (1156f6c)
- **[OpenVINO] Fix bfloat16 support in random ops and convert_to_numpy (#22567)** (8f5ef11)
- **Delete .github/workflows/gemini-issue-auto-fix.yml** (1754de1)
- **Keras automation: Fix issue triage github wf (#22583)** (5c38bb8)
- **Keras automations: decouple issue triage and automatic PR fix (#22581)** (4882ddd)
- **Keras Automations: fix gh actions issue with Auto generate PR (#22580)** (2407d7d)
- **Keras Automation : fix workflow (#22579)** (964cc68)
- **Keras Automation : Fix Issue triage workflow (#22578)** (ce2efc1)
- **auto generate fix PR (#22577)** (f26befa)
- **Automate issue triage - fix gh action error (#22575)** (135d6f9)
- **Fix convolution operations for batch size 0 (#22564)** (d589cde)
- **Fix `JaxLayer` tests on TPU. (#22556)** (5b7ab6f)
- **[Fix] keras.ops.sort(axis=None) fails on eager tensors instead of flattening and sorting (#22544)** (ebb7e78)
- **[OpenVINO] Fix cond side-effect isolation for optimizer tests (#22499)** (c042656)
- **Fix incorrect call to `removeLabel`. (#22508)** (1d1b021)
- **Fix TPU tests by installing `jax2onnx`. Enable ONNX tests. (#22501)** (87176a3)
- **[Fix] rgb_to_hsv does not validate channel count for Keras Input with channels_first (#22478)** (2adc438)
- **Fix Inconsistent tensor conversion (#22438)** (5973ad4)
- **[OpenVINO] Fix excluded and failing dtype tests (#22483)** (d1042bb)
- **Fix ReversibleEmbedding failing with .summary() (#22434)** (38d9543)
- **[Fix] ConvLSTM1D allows invalid strides/dilation config when built with Keras Input (#22477)** (9d2ebbf)
- **Fix custom_gradient for OpenVINO backend (#22464)** (57bd59a)
- **[Fix] AttributeError in ZIP extraction: 'ZipInfo' object has no attribute 'name' (#22480)** (b507c30)
- **[Fix] AttributeError in ZIP extraction: 'ZipInfo' object has no attribute 'name' (#22480)** (853c654)
- **Fix github runner based Torch GPU tests. Fix torch LSTM. (#22421)** (7287937)
- **Fix DepthwiseConv test on TPU. (#22459)** (2e2f138)
- **Fix intermitent unit test crash with TensorFlow on GPU. (#22458)** (88b3c08)
- **Fix `_parameterize_data` in OpenVino `Trainer` class. (#22453)** (fd60d40)
- **[OpenVINO] Fix array(), maximum(), minimum(), reshape() and split() ops in the numpy suite (#22343)** (5e8a4a1)
- **Fix: Conv1DTranspose: Invalid Symbolic Shape + Runtime Crash When output_padding ≥ strides (#22439)** (c2f0d55)
- **[OpenVINO] Implements LSTM and GRU, fixes RNN shape bug (#22436)** (7a44d44)
- **Fix Torch backend LSTM cuDNN: remove blanket exception catch and forced cpu() transfer (#22279)** (3b13145)
- **Fix formatting for `ruff` version 0.15.5. (#22411)** (fe6ef38)
- **Fix TextVectorization tf-idf mode deserialization failure (#22330)** (80bad7a)
- **Fix Softmax OOM when using mask on torch backend (#22379)** (6671dff)
- **[OpenVINO] Fix int8/uint8 bitwise ops broadcasting bug; re-enable int4 quantization tests (#22389)** (0e7dd66)
- **Fix TracerBoolConversionError when using add_loss with JAX JIT (#22395)** (69f9311)
- **[OpenVINO] Fix sharded and cross-dtype float weight loading (#22375)** (aaa1c0d)
- **Fix Function.operations including operations outside the graph boundary (#22316)** (4657bdf)
- **Fix one_hot symbolic output shape for IndexLookup (#22350)** (5e9af70)
- **fix(softmax): validate mask shape matches inputs shape (#22295)** (34e55d4)
- **[BUG] Fixes random seed integer overflow bug in OpenVINO and Torch backend (#22293)** (296c618)
- **fix: correct negative-order detection in is_continuous_axis (#22306)** (e6716aa)
- **[OpenVINO] Fix nn ops correctness: moments, binary_crossentropy, softmax, log_softmax (#22322)** (a692dae)
- **Fix `assertEquals` and replace with `assertEqual`. (#22385)** (d9966a5)
- **fix: add oov_method parameter to IntegerLookup for uniform OOV bucketing (#22327)** (cfff1d9)

### Backend
- **Implement nanmedian function in keras.ops (#22585)** (9708582)
- **Revert "Pass the `shape` when creating a `tf.Variable`. (#22460)" (#22609)** (e0baba4)
- **Updates to `dependabot.yml`. (#22606)** (8789611)
- **Bump the github-actions group with 6 updates (#22603)** (7537463)
- **[OpenVINO] Remove passing/skipped tests from exclusion list (#22591)** (6a227a5)
- **Test layers on non-trainable backends. (#22557)** (0aaaa3d)
- **Keras automation: Enhance JSON parsing and error handling in workflow** (8a941a4)
- **Keras automation: reset to working version (#22584)** (37d6ec4)
- **Enhance Gemini issue triage workflow (#22582)** (8d79140)
- **Automate issue triage : Allow applying multiple lables (#22576)** (1ecfc64)
- **Make `setUp` and `tearDown` call `super` in unit tests. (#22506)** (992f05e)
- **[OpenVINO] Implement QR decomposition (#22500)** (f715e07)
- **Automate issue  response (#22574)** (a0a7c48)
- **Modify Gemini API key (#22573)** (7e33eaf)
- **Functional: validate None inputs against InputLayer(optional=True) and improve error handling (#22160)** (1090088)
- **Revert workflows to be able to run GPU/TPU tests manually. (#22558)** (a2e97e1)
- **Configure concurrency on github test workflows. (#22553)** (17581cf)
- **Use `pull_request_target` event for GPU and TPU tests. (#22551)** (f18fca8)
- **Enable masking with the NumPy backend. (#22491)** (f18e417)
- **Run multi-device tests on our 4 TPU machines. (#22492)** (6ce18fb)
- **Check for Python `assert`s during the code check. (#22487)** (c8b0e62)
- **[jax_layer] Pass native_serialization_platforms to jax2tf (#22488)** (a829c83)
- **Implement nanquantile for the OpenVINO backend (#22498)** (f723d9c)
- **Implement numpy.view for OpenVINO backend (#22407)** (b8a2486)
- **Replace Kokoro app unlabeling behavior with github workflow. (#22504)** (ea5584b)
- **Use jax2onnx for direct JAX-to-ONNX export (#22443)** (cc7078b)
- **Move JAX CUDA tests to GPU runners. (#22462)** (3b2e3f8)
- **Rewrite torch LSTM to use functional API with CPU fallback (#22470)** (116914a)
- **[Keras 3 OpenVINO Backend]: Clean up refactored `CoreOpsCallsTests` from `excluded_concrete_tests.txt` (#22449)** (b72b75c)
- **Mark multi-device tests and run them separately on CPU. (#22484)** (e74cca7)
- **Implement nanquantile function in keras.ops (#22405)** (4dcd8d2)
- **Implement io for the OpenVINO Backend (#22482)** (cdc7fef)
- **Pass the `shape` when creating a `tf.Variable`. (#22460)** (2fb46fd)
- **Move TensorFlow CUDA tests to GPU runners. (#22461)** (95eec73)
- **Removes decorated tests (#22463)** (d69e886)
- **[OpenVINO] Implement map, switch, fori_loop, vectorized_map operators (#22431)** (f339c73)
- **Implement fmod for the OpenVINO Backend (#22425)** (7a5eb47)
- **Replace Python `assert`s in code with `raise ValueError`. (#22420)** (dc3bdb1)
- **[OpenVINO] Implement scan and associative_scan operators (#22415)** (1a19817)
- **[OpenVINO] Implement cond operator; enable tests for Hinge loss funcs and CosineDecay (#22409)** (8b2ab61)
- **[OpenVINO] Implement sinc operator  (#22408)** (340b110)
- **Don't skip attention tests on Torch anymore. (#22367)** (6c2720a)
- **Replace Python `assert`s with `self.assertXXX` in unit tests. (#22400)** (87c966e)
- **Remove Orbax dependency and update the OrbaxExport name to Neptune (#22396)** (62f24be)
- **Made layers.add_weight() args keyword-only with clear error handling (#22265)** (046ce7e)
- **Move Torch CUDA tests to GPU runners. (#21957)** (401e684)
- **[OpenVINO] Implement adaptive_average_pool and adaptive_max_pool (#22368)** (1b55025)
- **[OpenVINO] Implement conv_transpose and fold in nn.py (#22366)** (d6ae94c)
- **Update ai-edge-litert dependency in requirements (#22387)** (63cb3fc)
- **Use channels_last memory format for torch conv ops (#22324)** (cab3f1b)
- **Re-enable one step ahead `device_put` of data from datasets on JAX. (#22353)** (3c4f2cc)
- **Replace the jax `distribute_variable` with `distribute_tensor`. (#22373)** (549b476)
- **[OpenVINO] Implement evaluate, test_step, and test_on_batch  (#22354)** (5087861)
- **Improve gemini code review (#22374)** (3589aec)
- **[OpenVINO]Implemented extract_sequences and erfinv ops for the math suite. (#22320)** (01d044b)
- **Improve documentation of distribution APIs. (#22352)** (07a1ec1)
- **Improvements to `is_in_jax_tracing_scope` and its uses. (#22348)** (28ed89f)

### Docs
- **docs: clarify safe_mode limitations in deserialize_keras_object (#22469)** (5940557)
- **docs: Add guide on device placement using keras.device() (#22015)** (c36b169)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/keras-team/keras?utm_source=github-action)._