Weekly Project News

Archives
Subscribe

Weekly GitHub Report for Keras: August 24, 2026 - August 31, 2026 (21:13:10)

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
    • 1.2. Other Noteworthy Updates
  • II. Issues
    • 2.1. Top 5 Active Issues
    • 2.2. Top 5 Stale Issues
    • 2.3. Open Issues
    • 2.4. Closed Issues
    • 2.5. Issue Discussion Insights
  • III. Pull Requests
    • 3.1. Open Pull Requests
    • 3.2. Closed Pull Requests
    • 3.3. Pull Request Discussion Insights
  • IV. Contributors
    • 4.1. Contributors

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, advanced quantization methods like Activation-aware Weight Quantization, and a new ScheduleFreeAdamW optimizer, alongside optional Gated Attention in key attention layers. It also significantly enhances OpenVINO backend support with extensive NumPy, neural network, and control flow operations, adds numerous new math and preprocessing features, 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.

  1. [STAT:CONTRIBUTIONS WELCOME] [TYPE:FEATURE] [BACKEND:TORCH] [Epic] Support Torch in distribution API: This issue tracks the progress and remaining work for integrating PyTorch backend support into the Keras Distribution API, focusing on both data parallelism and model parallelism using PyTorch's DTensor. It details merged infrastructure components, ongoing pull requests for model parallelism features, and outstanding tasks such as unskipping tests, auditing operator compatibility, multi-GPU integration testing, and documentation updates.

    • The comments show interest in contributing, with one user volunteering to update the documentation to include the new DataParallel features and clarify the current state of ModelParallel support. Another comment links related pull requests addressing remaining tasks like test unskipping, DTensor compatibility audits, and multi-GPU integration tests, indicating coordination and progress planning for completing the feature set.
    • Number of comments this week: 2
  2. [ANNOUNCEMENT] 🔌 RFC - Keras Pluggable Backends: This issue proposes creating a plugin system for Keras backends to allow backend-specific code to reside in separate repositories and be installed as optional pip packages, enabling organizations to independently maintain their backend implementations without relying on the Keras core team. It also introduces the concept of secondary ops with fallback implementations to simplify backend development and improve feature completeness, alongside strategies for testing and managing circular dependencies between Keras and backend packages.

    • The comments discuss a proof of concept for a tinygrad backend that aligns with the proposed testing strategy and express interest in supporting the pluggable backend system, while also inquiring about the openness of the keras-openvino repository to external contributions.
    • Number of comments this week: 2
  3. Create PaddlePaddle backend: This issue is about creating a new backend for the Keras project using PaddlePaddle, as indicated by the creation of a new repository dedicated to this purpose. The issue references an original discussion linked to a previous pull request, suggesting ongoing development and collaboration around integrating PaddlePaddle with Keras.

    • The single comment provides a link to the original discussion related to the backend creation, indicating that the conversation is continuing from a prior pull request without additional commentary or updates in this issue thread.
    • Number of comments this week: 1
  4. [GOOD FIRST ISSUE] Inconsistent ops.gelu behavior for integer inputs across backends (NumPy silently returns zeros): This issue addresses the inconsistent behavior of the keras.ops.gelu function when given integer inputs across different backends, where NumPy silently returns zeros due to improper casting of float constants to integer types, while JAX computes the correct values and Torch raises an error. The reporter suggests that either all backends should compute gelu correctly by promoting integers to floats or all should raise an error, and offers to submit a pull request to fix the NumPy backend by promoting integer inputs to float and adding appropriate tests.

    • The single comment confirms the issue report and proposes a plan to fix the NumPy backend by promoting integer inputs to float for gelu computation, aligning it with JAX and Torch behavior, and adding regression tests to cover integer inputs.
    • 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: 4

Summarized Issues:

  • Backend development and architecture: Multiple issues focus on improving backend support for Keras, including creating a dedicated PaddlePaddle backend repository and proposing a plugin system to allow backend-specific code to be maintained as optional pip packages. These efforts aim to simplify backend development and enable organizations to independently manage their backend implementations.
  • issues/23516, issues/23523
  • Inconsistent backend behavior for operations: There is a reported inconsistency in the behavior of the keras.ops.gelu function when handling integer inputs across different backends, with NumPy returning zeros silently, JAX computing correctly, and Torch raising errors. This inconsistency highlights the need for either uniform computation or consistent error handling across backends.
  • issues/23528
  • Backend-specific bugs in reduction operations: The OpenVINO backend exhibits a bug where using keepdims=True with axis=None in reduction operations does not preserve the expected output rank, resulting in flattened shapes and errors such as AttributeError in ops.mean. This issue points to improper handling of tensor shape attributes in the OpenVINO backend.
  • issues/23536

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: 8

Summarized Issues:

  • Numerical Inconsistency in GPU Execution: The CLIPBackbone text_encoder produces numerically inconsistent outputs on GPU when using predict_on_batch() compared to an explicit tf.function graph call, with differences exceeding expected thresholds. However, the outputs match exactly on CPU, indicating a GPU-specific issue.
  • issues/22380
  • Tensor Handling and Padding Errors: The keras.ops.pad() function fails with a TensorFlow eager tensor when pad_width=0, raising a rank error, although it works correctly with symbolic inputs. The expected behavior is that pad_width=0 should be a no-op returning the input tensor unchanged in both cases.
  • issues/22540
  • Incorrect Mode Handling in RematScope: Setting mode=None in keras.RematScope incorrectly returns a truthy RematMode object instead of None, causing rematerialization to be misinterpreted as active despite documentation stating it should be disabled. This leads to unexpected behavior in code relying on this setting.
  • issues/23387
  • Quantization Failures Due to Division by Zero: The gptq_quantize_matrix function can perform unguarded division by zero on the diagonal elements of the inverse Hessian matrix, resulting in NaN or infinite values that corrupt quantized weights and cause quantization to fail. This critical bug undermines the reliability of the quantization process.
  • issues/23413
  • Stateful GRU Backward Pass Errors with Torch Backend: A stateful GRU layer using the Torch backend with cuDNN fails during the backward pass due to in-place modification of the initial hidden state, causing runtime errors. A workaround involves cloning the hidden state to prevent mutation during gradient computation, highlighting a backend-specific mutation issue.
  • issues/23462
  • CUDA Tensor Conversion Issues in PyGrain with Torch Backend: Using Keras with PyGrain and the Torch backend causes failures during batching when NumPy inputs are converted to CUDA tensors inside a PyGrain map operation, as CUDA tensors cannot be directly converted back to NumPy arrays. A local workaround forces tensor conversion on the CPU device to avoid this issue.
  • issues/23506
  • Bounding Box Corruption in RandomCrop Layer: The keras.layers.RandomCrop.transform_bounding_boxes method incorrectly swaps height and width axes when applying vertical and horizontal crop offsets, silently corrupting detection labels during training. This bug affects the accuracy of bounding box transformations in object detection tasks.
  • issues/23518
  • Cholesky Decomposition Failures in GPTQ Test: The GPTQTest::test_inv_hessian_zero_diagonal_stability fails on the master branch across jax, torch, and tensorflow backends due to Cholesky decomposition errors caused by non-positive-definite or NaN-containing inputs. This leads to continuous CI failures after a specific commit introduced the test.
  • issues/23531

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: 10

Key Open Pull Requests

1. [JAX] Accelerate multi-step training loops using on-device jax.lax.scan for steps_per_execution > 1: This pull request accelerates multi-step training loops in Keras 3 with the JAX backend by implementing true on-device execution using jax.lax.scan for steps_per_execution > 1, thereby eliminating host dispatch overhead and significantly improving throughput and latency on GPU, CPU, and multi-core setups while maintaining full compatibility with various dataset types and handling uneven batch sizes gracefully.

  • URL: pull/23527
  • Associated Commits: 770c5, 96d2a, 7c86a, f54a4, 49786

2. Step nextafter by a ULP of the result dtype on openvino: This pull request fixes the OpenVINO backend's implementation of the nextafter function by adjusting the step size to be based on the unit in the last place (ULP) of the result data type rather than a fixed float64 ULP, thereby enabling exact-ULP assertions to pass for float32 and float16 except for known limitations involving subnormal values and infinity conversions.

  • URL: pull/23520
  • Associated Commits: 801f7, c440b, 8a183

3. Honour keepdims when axis is None in the torch backend reductions: This pull request fixes the torch backend reductions in Keras to correctly honor the keepdims=True parameter when axis=None for operations like sum, prod, max, min, amax, and amin, ensuring that the output shape preserves the input rank (e.g., returning shape (1, 1) instead of a scalar) consistent with numpy and jax behavior, and adds regression tests to verify this fix.

  • URL: pull/23535
  • Associated Commits: e6fc3, 724bb, fbc8c

Other Open Pull Requests

  • Validation of label_smoothing parameter in loss functions: This pull request adds validation to ensure that the label_smoothing parameter in categorical_crossentropy and binary_crossentropy loss functions is within the range [0, 1], raising a ValueError if it is not. It also includes regression tests for both functional and class-based APIs to verify this behavior.
  • pull/23504
  • Standardization of keras.ops.gelu behavior across backends: This pull request standardizes the behavior of the keras.ops.gelu function by promoting integer and boolean inputs to float types before computation, fixing inconsistent results such as NumPy silently returning zeros for integer inputs. Tests were updated to cover integer dtypes, ensuring all backends produce correct outputs consistently.
  • pull/23530
  • Fixing mismatched argument names in function docstrings: This pull request corrects mismatched argument names in several function docstrings to accurately reflect the actual function signatures, preventing misleading API documentation and runtime TypeErrors. No changes were made to the code behavior itself.
  • pull/23505
  • Refactoring normalization operations to backend implementations: This pull request refactors normalization operations in Keras to delegate fused RMS and layer normalization computations to backend implementations, correcting axis handling for PyTorch. This enables more efficient kernel usage across multiple backends while maintaining consistent behavior and improving test coverage.
  • pull/23510
  • Introduction of quantization mode registry in Keras: This pull request introduces a quantization mode registry that centralizes and manages quantization mode descriptors, including configuration classes, policy-string codecs, hyperparameter resolution, and model-level hooks. It ensures strict validation of mode registration and routing policy parsing without changing existing layer files or behavior.
  • pull/23521
  • Update to PyTorch distributed training guide documentation: This pull request updates the PyTorch distributed training guide to recommend using keras.distribution.DataParallel with model.fit(), clarifying that Keras automates distributed data parallelism tasks. The existing manual DistributedDataParallel section for custom training loops remains unchanged, aligning the guide with current codebase capabilities without code changes.
  • pull/23525
  • API update from backend.is_tensor to backend.ops.is_tensor: This pull request updates the usage of the function backend.is_tensor to backend.ops.is_tensor to align with the latest Keras API changes, improving consistency across the codebase.
  • pull/23537

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: 35

Key Closed Pull Requests

1. [Don't Merge] Test: This pull request is a non-merged test branch containing multiple commits focused on implementing and refining various verification and permission probes related to runner boundaries, metadata, and resource authority checks across different platforms such as OpenVINO, GCP, and Kubernetes within the Keras project.

  • URL: pull/23533
  • Associated Commits: 3130c, 37e71, 03847, ac8ba, b8ac2, e84d1, 1af96, 3979a, ab619, 02f6d, 6caf2, c22bd, 03139, 0ee9d, 33f8f, 6140e

2. Broadcast single-pair pad_width to all axes in ops.pad: This pull request fixes a TensorFlow eager execution error in keras.ops.pad by broadcasting a single (before, after) pad_width pair to match the input tensor's rank before calling tf.pad, ensuring consistent behavior with symbolic tensors and other backends like NumPy and JAX.

  • URL: pull/23180
  • Associated Commits: 69cde, 461ce, 1e36f, 9d4e5, 60d6f, 94d71, 1d741, b7e34

3. Title: Standardize PyDataset support and tuple batch extraction in preprocessing layers (Normalization, Discretization) : This pull request standardizes input handling in Keras preprocessing layers by adding robust support for keras.utils.PyDataset and tuple/list batch extraction during adaptation in Normalization and Discretization layers, including safe empty-dataset validation and enhanced batch shape extraction, thereby fixing issue #21300 and improving consistency across these layers.

  • URL: pull/23362
  • Associated Commits: 27fd2, df041, f90d3, a95de, e1d47, cc5da, ff89a, e2a7b

Other Closed Pull Requests

  • Backend fixes and removals: Multiple pull requests fix regressions and backend inconsistencies by restoring dropped operation classes, removing obsolete references, correcting import paths, and completely removing the OpenVINO backend. These changes ensure backend operations are routed correctly and deprecated components are fully eliminated.
    [pull/23507, pull/23415]
  • Quantization improvements and fixes: Several pull requests enhance quantization support by introducing the QuantizedDense layer for native Quantization-Aware Training, improving GPTQ and AWQ calibration accuracy with memory optimizations and sequential layerwise calibration, and fixing bugs in quantization methods to prevent stale configurations and numerical errors. These updates significantly improve quantization reliability and performance across backends.
    [pull/23524, pull/23514, pull/23512, pull/23508, pull/23473, pull/23491, pull/23492, pull/23415]
  • Tensor and operation consistency fixes: Multiple pull requests address inconsistencies in tensor operations and function behaviors, including fixing keras.ops.gelu to handle integer inputs consistently across backends, correcting keras.ops.view() dtype handling, normalizing tensor-checking function usage to backend.ops.is_tensor, and fixing the PyTorch slice() function to preserve symbolic dimensions during tracing. These changes ensure consistent and correct tensor operations across different environments.
    [pull/23529, pull/23422, pull/23480, pull/23476, pull/23529]
  • Bug fixes in recurrent and attention layers: Pull requests fix bugs in the Torch + CUDA cuDNN backward pass for stateful GRU and LSTM layers by cloning hidden states to prevent in-place mutations, and resolve graph break issues in PyTorch backend's dot_product_attention function during torch.compile by skipping problematic constructor probes. These fixes improve stability and performance of recurrent and attention mechanisms.
    [pull/23464, pull/23327]
  • Calibration and error correction in GPTQ quantization: Several pull requests fix division-by-zero errors and add epsilon thresholds in GPTQ quantization functions to prevent NaN or infinite values during error correction and calibration. These fixes ensure stable and accurate quantization weight updates even with challenging calibration data.
    [pull/23411, pull/23415, pull/23427, pull/23473, pull/23491]
  • Data preprocessing and augmentation fixes: A pull request fixes the RandomCrop.transform_bounding_boxes method by correctly applying crop offsets to bounding box coordinates, preventing label corruption during data preprocessing. This ensures bounding boxes remain accurate after image transformations.
    [pull/23519]
  • Distributed training performance enhancement: One pull request enables asynchronous one-batch-ahead device prefetching in the JAX backend's JAXEpochIterator during distributed training, improving performance by overlapping data transfers with computation and eliminating data staging stalls on multi-device setups.
    [pull/23416]
  • Test coverage additions: A pull request adds test coverage for the tf_idf output mode in the StringLookup layer, addressing a previously untested feature to ensure comprehensive validation of all output modes.
    [pull/23447]
  • Documentation and default parameter corrections: One pull request corrects discrepancies between documented default parameter values and actual function signatures in multiple Keras functions, ensuring documentation accurately reflects code behavior without changing functionality.
    [pull/23477]
  • Rematerialization mode bug fixes: Two pull requests fix a bug in the get_current_remat_mode() function where RematScope(mode=None) was incorrectly treated as truthy, causing unintended rematerialization. The fix updates the function to return None properly and adds tests to verify this behavior.
    [pull/23411, pull/23423]
  • Histogram operation fix: A pull request fixes the Histogram operation by correcting its reference to the appropriate backend-specific numpy namespace, preventing AttributeErrors during model prediction across multiple backends.
    [pull/23509]

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
MarcosAsh 85 3 0 0
buildwithsuhana 61 8 0 1
pctablet505 69 0 0 0
hertschuh 38 1 1 5
gaga1313 29 2 0 0
JyotinderSingh 21 5 0 2
rstar327 27 0 0 0
goyaladitya05 23 1 0 0
jeffcarp 13 5 3 1
19 0 0 0

Access Last Week's Newsletter:

  • Link
Don't miss what's next. Subscribe to Weekly Project News:
Powered by Buttondown, the easiest way to start and grow your newsletter.