# Keras v3.15.0 - Product: Keras (https://whatsnew.fyi/product/keras) - Vendor: Keras - Date: 2026-06-24 - Version: v3.15.0 - Original notes: https://github.com/keras-team/keras/releases/tag/v3.15.0 - Permalink: https://whatsnew.fyi/product/keras/releases/v3.15.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Added `export_torch` function to export Keras models to native PyTorch `nn.Module` format - **added** — Added `sliding_window` parameter to `MultiHeadAttention` and `GroupedQueryAttention` for efficient long-context attention - **added** — Added `unique`, `fabs`, `fmax`, `fmin`, `dsplit`, `erfc`, `percentile`, and `nanpercentile` operations to `keras.ops.numpy` - **added** — Added `pinv` (pseudo-inverse) and `matrix_rank` operations to `keras.ops.linalg` - **added** — Added `sobel_edges` and `ssim` (structural similarity) operations to `keras.ops.image` - **added** — Added `MultiOptimizer` to support training sub-networks with different optimizers - **added** — Added `predict_proba` method to `SKLearnClassifier` - **added** — Added LiteRT (TFLite) export support for models using the PyTorch backend - **added** — Added CTC beam search decoding for the Torch backend - **changed** — Causal-only attention in `MultiHeadAttention` and `GroupedQueryAttention` now automatically dispatches to Flash Attention (cuDNN SDPA) - **changed** — `keras.ops.transpose` now supports negative axis values - **changed** — JAX backend now fuses Bidirectional LSTM into a single cuDNN call - **changed** — Added fused bidirectional GRU for Torch backend - **changed** — Added distribution information (`num_processes`, `num_model_replicas`, `data_shard_id`) to `ModelParallel` - **fixed** — Fixed manual attention path to correctly apply causal masking - **fixed** — Fixed LiteRT export for Keras 3 with TensorFlow 2.20 and Python 3.13 - **fixed** — Fixed float16 numerical instability in `GroupNormalization` with small epsilon - **fixed** — Fixed GPU OOM with rank-3 input in Dense layer due to `BatchMatMulV2` gradient materialization - **security** — Hardened model reloading against HDF5 exploits by rejecting `ExternalLink`, `SoftLink` groups, virtual datasets, and shape-bomb datasets - **security** — Hardened archive loading by rejecting tar members and links escaping extraction directory and ZIP/NPZ members declaring excessive data ##### Highlights - **Keras-to-Torch Export**: New `export_torch` enables exporting Keras models to native PyTorch `nn.Module` format, along with LiteRT (TFLite) export support for the PyTorch backend. - **Sliding Window Attention**: Added `sliding_window` parameter to `MultiHeadAttention` and `GroupedQueryAttention` for efficient long-context attention. - **Flash / Fused SDPA**: Causal-only MHA/GQA now automatically dispatches to Flash Attention (cuDNN SDPA), and the manual attention path correctly applies causal masking. - **Multi-Optimizer Training**: New `MultiOptimizer` supports assigning different optimizers to sub-networks. - **New Math Operations**: Added `unique`, `pinv`, `matrix_rank`, `fabs`, `fmax`, `fmin`, `erfc`, `dsplit`, `percentile`, `nanpercentile`, `sobel_edges`, and `ssim` (structural similarity) to `keras.ops`. - **Security Hardening**: Comprehensive hardening of model reloading against HDF5 exploits, tar/zip traversal attacks, insecure deserialization. --- ##### New Features and Operations ###### Multi-Backend Operations - **New NumPy Operations**: Added `unique`, `fabs`, `fmax`, `fmin`, `dsplit`, `erfc`, `percentile`, `nanpercentile` in `keras.ops.numpy`. - **New Linear Algebra Operations**: Added `pinv` (pseudo-inverse) and `matrix_rank` in `keras.ops.linalg`. - **New Image Operations**: Added `sobel_edges` for edge detection and `ssim` (structural similarity) in `keras.ops.image`. - **Negative Axes in Transpose**: `keras.ops.transpose` now supports negative axis values. ###### Layers and Attention - **Sliding Window Attention**: `MultiHeadAttention` and `GroupedQueryAttention` layers support the `sliding_window` parameter for efficient long-sequence processing. - **Flash Attention Engagement**: Causal-only attention in MHA/GQA now uses Flash SDPA for significant speedups. - **Fused Bidirectional LSTM/GRU**: JAX backend now fuses Bidirectional LSTM into a single cuDNN call; fused bidirectional GRU added for Torch backend. - **CTC Beam Search Decoder**: Added CTC beam search decoding for the Torch backend. ###### Training and Optimizers - **MultiOptimizer**: Supports training sub-networks with different optimizers. - **SKLearn Classifier**: Added `predict_proba` method to `SKLearnClassifier`. --- ##### Export and Deployment - **Keras-to-Torch Export**: Export Keras models to native PyTorch `nn.Module` via `model.export(..., format="torch")`. - **LiteRT (TFLite) Export for PyTorch**: Added LiteRT export support for models using the PyTorch backend. - **LiteRT Compatibility Fix**: Fixed LiteRT export for Keras 3 + TF 2.20 + Python 3.13. - **ONNX Export**: Support for dict/list inputs in Torch ONNX export; documented static input signature requirement for LiteRT PyTorch export. --- ##### Distribution and Parallelism - **ModelParallel Improvements**: Defined contiguous replica-group data shard ID convention; added distribution information (`num_processes`, `num_model_replicas`, `data_shard_id`). - **Initializer Distribution Layout**: Initializers can now handle the distribution layout directly with JAX. - **TF Dataset Distribution**: Refactored TF dataset distribution with centralized sharding routing; fixed data distribution for model training in JAX. --- ##### OpenVINO Backend Support The OpenVINO backend received continued improvements: - **New Operations**: Implemented `glu`, `sparsemax`, `gaussian_blur`, `logdet`, `cholesky`, `lu_factor`, `erfc`, `segment_min`, `segment_prod`, `percentile`, `nanmedian`, `nanpercentile`, `unique`, `flash_attn`, `greedy ctc_decode`, `solve_triangular`, `compute_homography_matrix`, and image transforms (affine, perspective, elastic). - **Opset Upgrades**: Upgraded to opset16 for select operations and full upgrade. - **Fixes**: Dynamic/symbolic shape handling, mask propagation, random seed determinism, dropout during predict, Lanczos interpolation in resize, dynamic batch shape propagation, and improved ef _[Truncated at 4000 characters — full notes: https://github.com/keras-team/keras/releases/tag/v3.15.0]_