Weekly GitHub Report for Keras: September 07, 2026 - September 14, 2026 (20:08:34)
Weekly GitHub Report for Keras
Thank you for subscribing to our weekly newsletter! Each week, we deliver a comprehensive summary of your GitHub project's latest activity right to your inbox, including an overview of your project's issues, pull requests, contributors, and commit activity.
Table of Contents
I. News
1.1 Recent Version Releases:
The current version of this repository is v3.14.0
1.2 Version Information:
Released on April 2, 2026, this version introduces full Orbax checkpoint integration with sharding and step recovery, advanced quantization methods like AWQ and Asymmetric INT4, a new ScheduleFreeAdamW optimizer, and optional Gated Attention in key attention layers. Additionally, it significantly expands OpenVINO backend support with numerous NumPy, neural network, and control flow operations, enhances preprocessing layers, and includes various backend-specific improvements and bug fixes.
Click here to view the full release notes!
II. Issues
2.1 Top 5 Active Issues:
We consider active issues to be issues that that have been commented on most frequently within the last week. Bot comments are omitted.
-
[TYPE:BUG] [BACKEND:TORCH]
torch.vmapfails on nightly but runs on older version: This issue reports a regression in thetorch.vmapfunctionality when used with the Keras backend on a nightly version, where a previously working vectorized convolution operation now fails due to PyTorch not supporting certain memory format queries insidevmap. The problem stems from a recent change that applies a channels-last memory format optimization in convolution operations, which is incompatible withvmap's current limitations, causing runtime errors when checking tensor contiguity with non-default memory formats.- The comments confirm the regression is due to a backend change in PyTorch's convolution ops related to memory format handling inside
vmap, propose a fix to skip the problematic memory format check during batched operations, and note that a pull request has been opened to address the issue, with positive feedback from users. - Number of comments this week: 3
- The comments confirm the regression is due to a backend change in PyTorch's convolution ops related to memory format handling inside
-
[LAYERS] [BACKEND:OPENVINO] leaky_relu drops the negative slope for integer input on the numpy backend: This issue describes a problem where the
keras.ops.leaky_relufunction incorrectly drops the negative slope for integer inputs when using the numpy backend, causing it to behave like a standard ReLU instead of a leaky ReLU. Additionally, there is a dtype inconsistency whereLeakyRelu.compute_output_specreturns the input dtype, which is integer, even though backends like JAX and TensorFlow return a float dtype for the output.- The comment acknowledges the issue, confirms it is reproducible, and explains that the numpy backend casts the negative slope to the input dtype, resulting in a zero slope for integer inputs; it also notes the dtype inconsistency between the output spec and actual outputs in other backends.
- Number of comments this week: 1
-
[TYPE:SUPPORT] [TYPE:FEATURE] [PYTHON] [Refactor] Introduce internal
Auto*Operationbase classes acrosskeras.opsto reduce boilerplate: This issue proposes refactoring around 80 operations in thekeras.opsmodule by introducing three internal base classes to reduce boilerplate code and standardize symbolic shape and dtype inference, particularly for elementwise, binary broadcast, and reduction operations. The goal is to improve maintainability and consistency in handling sparse and ragged tensors while eliminating over 700 lines of duplicated code.- The comment acknowledges the validity of the proposal, adds a reproduction notebook covering key behaviors such as elementwise operations and dtype inference, and assigns the issue to the original poster, expressing appreciation for the contribution.
- Number of comments this week: 1
Since there were fewer than 5 open issues, all of the open issues have been listed above.
2.2 Top 5 Stale Issues:
We consider stale issues to be issues that has had no activity within the last 30 days. The team should work together to get these issues resolved and closed as soon as possible.
As of our latest update, there are no stale issues for the project this week.
2.3 Open Issues
This section lists, groups, and then summarizes issues that were created within the last week in the repository.
Issues Opened This Week: 8
Summarized Issues:
- Functionality Bugs in Backend Operations: Several issues report bugs in backend operations affecting function behavior and output consistency. These include
torch.vmapfailing due to unsupported memory format checks in 3D convolutions,keras.ops.leaky_reluincorrectly castingnegative_slopeto integer on the numpy backend, andkeras.ops.binary_crossentropyin the Torch backend inconsistently squeezing dimensions causing shape mismatches. - issues/23587, issues/23607, issues/23621
- Checkpointing and Error Handling: One issue highlights that the
OrbaxCheckpointcallback silently discards exceptions during asynchronous checkpoint finalization, which can cause unnoticed failures and stale model weights without warnings or errors. This undermines reliability in model saving processes. - issues/23609
- Backend-Specific Execution Failures: The OpenVINO backend has defects where
while_loopfails due to undeclared parameters when closing over outer tensors, andops.repeaterrors on scalar tensor inputs for repeats. These issues cause failures in encoder-decoder text generation models under dynamic dimensions. - issues/23612
- Contribution Process and Documentation Issues: There are issues related to contribution policies and documentation, including a new pull request policy requiring linked issues and limiting active PRs to improve quality, and a broken link to the AI Assisted Contribution Policy in the PR template that prevents access to guidelines.
- issues/23601, issues/23617
- Codebase Refactoring and Standardization: A proposal suggests refactoring around 80 operations by introducing internal base classes to reduce boilerplate and standardize execution and shape/dtype inference, improving maintainability and consistent handling of ragged and sparse tensors.
- issues/23625
2.4 Closed Issues
This section lists, groups, and then summarizes issues that were closed within the last week in the repository. This section also links the associated pull requests if applicable.
Issues Closed This Week: 17
Summarized Issues:
- Model input and output shape mismatches: Several issues highlight problems with shape compatibility in Keras functional models, where mismatches between model outputs and training targets either allow incorrect training or cause errors at inconsistent stages. Additionally, dictionary inputs in Functional models can incorrectly associate unrelated keys, leading to misleading shape errors, which can be avoided by using ordered lists of named inputs.
- issues/20719, issues/23258
- Backend operation bugs and inaccuracies: There are bugs in specific Keras ops such as
nextafterreturning positive infinity incorrectly anderfinvreturning infinity near boundary values, indicating errors in handling edge cases. Proposals to add new ops likecov,copysign, andfloat_poweraim to provide consistent, backend-agnostic implementations for common mathematical operations currently missing or inconsistently implemented. - issues/23132, issues/23133, issues/23493, issues/23497, issues/23499
- Performance inefficiencies and redundant computations: Multiple issues address inefficiencies such as redundant dtype lookups, double copying of tensors in convolution operations, unnecessary pytree traversals, redundant tensor conversions in training steps, and duplicate name scope openings in layer calls. These were resolved or proposed to be fixed by caching, short-circuiting, merging scopes, and introducing fast paths to reduce overhead and improve runtime efficiency.
- issues/23272, issues/23279, issues/23281, issues/23282, issues/23290, issues/23294
- API updates and feature additions: Updates include changing all
backend.is_tensorcalls tobackend.ops.is_tensorfor consistency, adding support forlabel_smoothinginSparseCategoricalCrossentropyto enable smoothing on integer targets, and fixing the missing export of thekeras.ops.randomsubmodule in the public API, which currently causes attribute errors despite internal availability. - issues/23485, issues/23487, issues/23575
- Project roadmap and milestones: The development roadmap outlines key focus areas such as pluggable backends, performance optimization, distributed training, and deployment guides, along with recently shipped milestones to guide contributors and users on the ongoing evolution of Keras.
- issues/19519
2.5 Issue Discussion Insights
This section will analyze the tone and sentiment of discussions within this project's open and closed issues that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.
Based on our analysis, there are no instances of toxic discussions in the project's open or closed issues from the past week.
III. Pull Requests
3.1 Open Pull Requests
This section provides a summary of pull requests that were opened in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.
Pull Requests Opened This Week: 18
Key Open Pull Requests
1. Handle native backend tensors in data adapters: This pull request improves the data adapters in Keras to natively handle backend tensors from pluggable backends like MLX by adding a fallback check using ops.is_tensor(x) and enabling zero-copy numpy views via the buffer protocol or safe conversions, thereby preventing crashes during model training and evaluation when encountering such tensors.
- URL: pull/23596
2. Fix tf.keras.ops.numpy.logaddexp and logaddexp2 gradient at equal inputs: This pull request fixes a gradient computation bug in tf.keras.ops.numpy.logaddexp and logaddexp2 where equal inputs caused incorrect gradients by reformulating the numerical stabilization using a stopped-gradient maximum to ensure correct and stable reverse-mode automatic differentiation, including handling of non-finite inputs, and adds comprehensive tests across multiple backends to validate the fix.
- URL: pull/23616
3. Openvino while loop capture and scalar repeat: This pull request fixes two OpenVINO backend defects related to handling captured outer tensors in while_loop bodies and correctly processing scalar tensor repeats in numpy.repeat, enabling encoder-decoder generation with dynamic dimensions to run properly and unblocking KerasHub seq2seq generation on OpenVINO.
- URL: pull/23613
Other Open Pull Requests
- Gradient and Autodiff Fixes: Multiple pull requests address issues in gradient computation and autodiff behavior. One fixes the incorrect gradient of the
ldexpfunction at zero by removing an unnecessary condition and adding tests, while another promotes integer inputs inleaky_reluto float to prevent parameter truncation and align behavior with other backends.
[pull/23615, pull/23608]
- Distributed and Backend Synchronization Improvements: Several pull requests improve distributed training and backend synchronization. One refactors TensorFlow distributed gradient accumulation to avoid nested control-flow errors, another generalizes callback state synchronization for multiple backends beyond JAX, and a third adds a warning for checkpoint finalization failures to prevent silent errors.
[pull/23592, pull/23620, pull/23610]
- Testing and Validation Enhancements: Multiple pull requests enhance validation and testing robustness. These include adding validation for
AffineTransformoutput shapes,BatchNormalizationmomentum range, and Adagrad optimizer parameters, as well as updating assertion functions to enforce shape consistency and adding import tests for pluggable backends.
[pull/23619, pull/23623, pull/23624, pull/23605, pull/23597]
- Operation Refactoring and Standardization: One pull request introduces internal base classes to automate backend function dispatch and output specification, refactoring 80 operations to reduce boilerplate while maintaining backward compatibility and adding unit tests.
[pull/23626]
- Error Handling and User Feedback Improvements: A pull request improves error handling in loss computation by raising clear errors when labels are missing and preventing crashes during error re-wrapping, providing more informative feedback to users.
[pull/23622]
- Bug Fixes in Memory Format and Documentation: One pull request fixes a runtime error caused by querying
is_contiguouswithchannels_lastformat insidetorch.vmapby skipping unsupported checks, and another fixes a broken link in the AI assisted contribution policy section of the PR template.
[pull/23588, pull/23618]
- Einsum Layer Refactor for Quantization: A pull request refactors the
EinsumDenselayer to unify quantization strategies under a single protocol, enabling seamless support for multiple quantization types and improving LoRA application while maintaining checkpoint compatibility.
[pull/23606]
3.2 Closed Pull Requests
This section provides a summary of pull requests that were closed in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.
Pull Requests Closed This Week: 48
Key Closed Pull Requests
1. perf(layers): open the layer name scope once per call, not twice: This pull request optimizes the Layer.__call__ method by merging two separate openings of the layer name scope into a single scope per call, thereby reducing redundant name-scope allocations and improving performance without changing behavior or output correctness.
- URL: pull/23301
- Associated Commits: 3ef1e, ba3d8, 5aa16, 7da08, c1f28, a3742, 40ebe, d4dec, 1af9b, e8ebb, b856a, 35fcd, 6b59e, c9426, 41246, a1025, 589fb, 094e2, ff146, f47af, 57692, af020, 47576, 56b78
2. perf(layers): single-tensor structure fast paths in Layer.call mask pipeline: This pull request introduces optimized fast paths in the Layer.__call__ mask pipeline for calls involving a single leaf tensor by reusing previously computed predicates to skip redundant tree-walking operations, adding leaf-specific branches to mask handling and metadata setting, and caching key strings to reduce allocations, resulting in improved eager and compiled performance without changing existing behavior for multi-argument or nested calls.
- URL: pull/23300
3. perf(layers): extend CallSpec fast path to training=CallSpec fast path in Layer.__call__ to efficiently handle calls with a single training=<bool> keyword argument—closing a performance gap left by a prior change (#23198)—thereby significantly reducing slow-path binder invocations during typical training/evaluation calls without altering behavior for other call shapes, and includes thorough tests and benchmarks confirming improved call binding efficiency and compatibility across backends.
- URL: pull/23288
Other Closed Pull Requests
- Performance optimizations in Keras Layer and Torch backends: Multiple pull requests improve performance by optimizing key methods and functions. These include widening the input-conversion gate in
Layer.__call__to skip redundant conversions, optimizing the torch backend's_dict_to_ordered_dictfor deterministic behavior and compatibility withtorch.compile, and adding a fast path inLoss.__call__to bypass overhead for plain torch tensors, collectively enhancing efficiency in common training and evaluation workflows.
- Backend dtype and memory optimizations: Several pull requests focus on improving dtype handling and memory efficiency in backend operations. These include optimizing
standardize_dtypewith O(1) membership checks and caching, eliminating redundant contiguous memory copies in PyTorch convolution input paths, and fixing cache key issues related totf.DTypehash/equality coercion, resulting in micro-benchmark speedups and better compatibility with compilation tools.
- Fixes and improvements for Keras functional model dict input handling: Two pull requests address issues with dictionary inputs in Keras functional models by filtering out extra keys that cause incorrect flattening or input mismatches. They introduce reconciliation mechanisms to ensure consistent behavior in eager and symbolic calls, improving error clarity and input matching correctness.
- Distributed training and multiprocessing fixes: Pull requests improve PyTorch distributed training stability by changing multiprocessing start methods to avoid CUDA deadlocks, adjusting data layouts and samplers, and refactoring distributed test lifecycle management to prevent timeouts and port collisions in CI environments.
- New and fixed mathematical operations in keras.ops.numpy: Multiple pull requests add or fix numpy-compatible operations in
keras.ops.numpy. These include addingcopysignwith backend-agnostic behavior, fixingnextafterto return the largest finite float32 instead of infinity, clamping inputs inerfinvto avoid infinite results near 1.0, and introducingfloat_powerto handle integer bases raised to negative exponents consistently across backends.
- Implementation of covariance function in keras.ops: A pull request implements the
covfunction to estimate covariance matrices consistent withnp.cov, supporting 1D and 2D inputs and ensuring compatibility across multiple backends with consistent error handling and tests.
- Test infrastructure and CI workflow improvements: Pull requests improve test exclusion mechanisms by switching to exact test node ID matching and refactor CI workflows by extracting CPU test jobs into reusable workflows. These changes enhance test reliability, transparency, and reduce redundancy in nightly jobs.
- API consistency and code ownership updates: Pull requests address API consistency by exporting
keras.ops.randomas an alias tokeras.randomto prevent attribute errors, and update the CODEOWNERS file to add the core team for workflow directory changes, facilitating smoother PR merges.
- Fixes for metrics and symbolic tracing issues: Pull requests fix the
CosineSimilaritymetric to properly serialize theaxisparameter and address failures ofops.multi_hotandops.unfoldunder symbolic graph tracing in OpenVINO and TensorFlow by correcting dynamic batch dimension handling.
- New loss function for sparse categorical focal crossentropy: A pull request introduces the
sparse_categorical_focal_crossentropyloss and wrapper to efficiently handle sparse integer labels by internally converting them to one-hot, reducing memory usage for large-scale tasks with comprehensive tests ensuring equivalence to the categorical version.
- Fixes and improvements in Gaussian blur and Graphviz label security: Pull requests fix the
gaussian_blurfunction to correctly map height and width parameters for kernel construction across backends and address security issues inmake_layer_labelby escaping HTML-like fields to prevent injection and formatting errors.
3.3 Pull Request Discussion Insights
This section will analyze the tone and sentiment of discussions within this project's open and closed pull requests that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.
Based on our analysis, there are no instances of toxic discussions in the project's open or closed pull requests from the past week.
IV. Contributors
4.1 Contributors
Active Contributors:
We consider an active contributor in this project to be any contributor who has made at least 1 commit, opened at least 1 issue, created at least 1 pull request, or made more than 2 comments in the last month.
If there are more than 10 active contributors, the list is truncated to the top 10 based on contribution metrics for better clarity.
| Contributor | Commits | Pull Requests | Issues | Comments |
|---|---|---|---|---|
| pctablet505 | 88 | 0 | 0 | 0 |
| JyotinderSingh | 21 | 5 | 0 | 20 |
| hertschuh | 10 | 3 | 0 | 21 |
| Neilblaze | 14 | 5 | 4 | 0 |
| 18 | 0 | 0 | 0 | |
| SamanehSaadat | 17 | 0 | 0 | 0 |
| M0nd0R | 14 | 3 | 0 | 0 |
| laxmareddyp | 10 | 5 | 1 | 1 |
| samudraneel05 | 7 | 3 | 1 | 6 |
| MarcosAsh | 11 | 5 | 0 | 0 |
Access Last Week's Newsletter: