Weekly Project News

Archives
Subscribe

Weekly GitHub Report for Keras: August 04, 2026 - August 11, 2026 (00:34:21)

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 AWQ and Asymmetric INT4, a new ScheduleFreeAdamW optimizer, and 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. [TYPE:BUG] [BACKEND:TENSORFLOW] keras.ops.rsqrt overflows to Inf for smallest positive float64 input: This issue reports that the function keras.ops.rsqrt incorrectly returns infinity when given the smallest positive float64 input, despite the mathematically correct result being a very large but finite number. The problem is demonstrated with a minimal reproducible example showing that while other libraries like torch.rsqrt compute the finite value correctly, Keras overflows to infinity for this edge case.

    • The comments confirm the issue is reproducible in the latest Keras version, with a shared notebook for verification. The team is investigating the problem, but there are concerns about failing tests related to a recent code change, and a discussion is ongoing about whether to revert certain modifications or delegate the fix to another team member.
    • Number of comments this week: 3
  2. [TYPE:BUG] [Bug] RematScope(mode=None) Returns a Truthy RematMode Object Instead of None When Rematerialization Is Documented as Disabled: This issue reports that when setting mode=None in keras.RematScope to disable rematerialization, the function get_current_remat_mode() returns a truthy RematMode object instead of None or a falsy value, which contradicts the Keras documentation. This behavior causes conditional checks relying on the falsiness of the mode to fail, making it impossible to correctly detect when rematerialization is disabled.

    • The first comment acknowledges the issue and confirms it has been reproduced, promising to investigate further, while the second comment expresses interest in submitting a pull request to address the problem.
    • Number of comments this week: 2
  3. [STAT:AWAITING RESPONSE FROM CONTRIBUTOR] [TYPE:BUG] keras.ops.numpy.i0 overflows to Inf for finite float64 result near x=713: This issue reports that the function keras.ops.numpy.i0 incorrectly returns infinity for an input value of 713.0, even though the mathematically correct result is a very large but finite float64 number. The problem is identified as stemming from TensorFlow's underlying implementation of the Bessel function tf.math.bessel_i0, which also returns infinity for this input, indicating that the overflow is not caused by Keras itself but by TensorFlow.

    • The comment confirms the issue originates from TensorFlow's implementation rather than Keras, demonstrating that tf.math.bessel_i0 returns infinity for the input 713.0 as well, and suggests closing the issue in the Keras repository and reopening it in the TensorFlow repository.
    • Number of comments this week: 1
  4. [STAT:CONTRIBUTIONS WELCOME] [GOOD FIRST ISSUE] [KERAS-TEAM-REVIEW-PENDING] [Bug] Division by zero in gptq_quantize_matrix: This issue reports a bug in the gptq_quantize_matrix function where division by zero can occur due to the diagonal elements of the inverse Hessian matrix being zero or very close to zero, leading to propagation of NaN or infinite values that corrupt the quantized weights. The user suggests adding a small epsilon to guard the division operation to prevent numerical instability and ensure the quantization process completes correctly even when the Hessian matrix is singular or near-singular.

    • The single comment acknowledges the detailed report and reproduction steps, agrees that the NaN propagation and weight corruption are concerning, and supports adding a safeguard around the division for numerical stability.
    • 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:

  • Numerical accuracy and overflow issues in Keras ops: Several Keras operations exhibit incorrect behavior when handling large or small floating-point inputs, resulting in infinite values instead of large but finite numbers. These issues highlight problems with numerical stability and overflow handling in the underlying TensorFlow implementations.
  • issues/23400, issues/23401
  • Quantization failure due to division by zero in gptq_quantize_matrix: The gptq_quantize_matrix function can fail because it performs unguarded division by diagonal elements of the inverse Hessian matrix, which may be zero. This leads to NaN or infinite values that corrupt the quantized weights and cause the quantization process to fail.
  • issues/23413
  • Planning for simplification of Keras backend maintenance: There is an ongoing effort to create a comprehensive plan aimed at simplifying the building and maintenance of Keras backends. More detailed information about this plan will be provided later.
  • issues/23392

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

Summarized Issues:

  • Callback validation errors: The lack of early validation for callback objects passed to model.fit() causes delayed and confusing AttributeErrors when invalid callbacks are used. This results in unclear error messages that only appear during execution rather than at initial setup, complicating debugging.
  • issues/23263
  • Numerical overflow and accuracy issues in keras.ops: The keras.ops.i0 function returns infinity for large input values like 713.0, which is incorrect since the mathematically expected result is a very large but finite float64 number. This indicates overflow or numerical accuracy problems in the implementation affecting the modified Bessel function calculations.
  • issues/23398, issues/23399
  • Incorrect decoding in unpack_ternary with signed int8 dtype: The unpack_ternary function produces incorrect decoding results when handling packed tensors with signed int8 dtype due to overflow and improper handling of negative values. This leads to silent data corruption and mismatched ternary values, compromising data integrity.
  • issues/23374

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

Key Open Pull Requests

1. Fix rsqrt overflow for small float64 values using pow: This pull request fixes the overflow issue in the rsqrt function for very small float64 values by changing its implementation to use backend.math.pow(x, -0.5), ensuring consistent behavior across all backends including JAX.

  • URL: pull/23406
  • Associated Commits: d8a15, c1d08, fd79e

2. Fix test_cross and numpy backend cross() for NumPy>=2.5.0: This pull request addresses compatibility issues with NumPy version 2.5.0 and above by fixing the test_cross function and the numpy backend's cross() implementation to correctly handle 2D vector inputs, which are no longer supported by np.cross(), by computing the 2D cross product directly in tests and padding 2D vectors to 3D in the backend.

  • URL: pull/23408
  • Associated Commits: 3012d, 2521a

3. Introduce Model Parallel infrastructure and DTensor support for Keras Variables in torch core.py: This pull request introduces Model Parallel infrastructure and DTensor support for Keras Variables in the PyTorch backend by implementing distributed variable initialization, automatic tensor promotion to DTensors, and updates to assignment and conversion functions to ensure seamless distributed execution and compatibility with mixed-tensor operations.

  • URL: pull/23402
  • Associated Commits: 0b7d0

Other Open Pull Requests

  • Backend compatibility and bug fixes: Multiple pull requests address compatibility and bug fixes across different backends. These include fixing the test_cross function for NumPy 2.5.0+, correcting the keras.ops.nextafter function on TensorFlow and PyTorch backends, and resolving a division by zero error in the GPTQ quantization function to prevent NaN weight corruption.
  • [pull/23409, pull/23415, pull/23417]
  • Performance improvements in distributed training: One pull request introduces asynchronous one-batch-ahead device prefetching in the JAX backend's JAXEpochIterator. This enhancement overlaps host-to-device data transfers with accelerator computation, reducing latency and eliminating step-to-step stalls on multi-device TPU/GPU setups.
  • [pull/23416]
  • Refactoring and code centralization: A pull request refactors the LossScaleOptimizer by consolidating gradient unscale logic into a single helper function. This change centralizes code to prevent divergence without altering existing behavior.
  • [pull/23412]
  • Rematerialization mode fix: One pull request fixes a bug in the get_current_remat_mode() function where RematScope(mode=None) was incorrectly treated as truthy. The fix ensures rematerialization is correctly recognized as disabled when explicitly set and adds a test to verify this behavior.
  • [pull/23411]
  • Model parallelism and attention mechanism updates: Two pull requests add support for model parallelism in the PyTorch trainer and modify the dot scale attention mechanism for dtensor compatibility in Keras. These changes enhance parallelism and backend support for attention mechanisms.
  • [pull/23403, pull/23404]

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

Key Closed Pull Requests

1. Add shuffle test for train/validation split in image_dataset_from_directory.: This pull request adds a new test named test_image_dataset_from_directory_shuffle_with_split to verify the correctness and determinism of shuffling combined with train/validation splitting when using the validation_split parameter in the image_dataset_from_directory function, covering both TensorFlow (tf) and Grain dataset formats, and also removes a related TODO comment in the existing shuffle test.

  • URL: pull/23109
  • Associated Commits: a68b0, 3863f, 9b04a, 58cce, b49ec, 27f10, e6c1e, ec698, 1a20c, 4f7b2, 58467, 15231, 7e9cc, d9c7d, 31cb9, af3f2, cb147, 59cb0, 5a060, 49180, 1ef4b, 714b3, f58ef, 9d1d3, 97031, 1f080, ca44e, 5c055, ab933, e35e9, f4c8f, b6ac1, c8ef8, 72638, 669d1, 59f1e, 54480, 3434a, c8b27, e3514, fb673, 6f9c3, 37c93, 94626, 751e9, 405b8, 14710, d4210, 0c91a, dead1, 4ee52, 1d0bb, 03320, 37aee, d1972, 41d91, a8302, 587ba, ffce2, 6e5b8, 6413a, 6f0ea, cf208, b4051, 6e252, 0c1d2, 2f076, c882d, 58bf3, ae2a1, 5139f, e4f0b, bb5e6, 0a95e, 1d55a, a1db8, f6e03, 752e5, 6b5b6, 34eac, 869fa, cdc14, bc505, 5322a, b76c2, 12a80, 4b7f2, ce028, 6ce4a, 1feae, c6a67, 3346d, d9870, e94d1, 702c6, 24ce7, b2672, 3b9c3, 42050, 08c0e, 8f6d8, f7c37, 92364, 64c31, 2959c, 7ce39, 1a0cc, 54ad7, 3fdc8, 13dc3, 68b47, ae1a7, cec1d, daab5, 63a7c, 00d90, 5cf4b, ddc0d, 042ba, 459e8, 049ea, c9502, 254c4, 99228, 93bc7, accf1, c4763, 99456, 3307a, dcd05, d18c3, 52987, 6f3ab, da45b, 6aec0, 2b42d, b3f24, 8576e, 35c1c, c45ee, 829f4, ab961, 29e32, bd8c6, a9f09, fa308, f1a04, 9e050, ef679, 228a1, 18918, 25cf9, ee322, 88653, 183e2, 594fe, c6f2c, ceef0, ffea1, 3662b, 1b33c, b3fff, 55593, 2bd9b, 42a8a, 17a35, 08d62, 0f80f, 6736d, 568ba, 1bf9a, c2ac1, 7d724, d841c, b91ec, 0db07, 255cd, 805a0, eed66, b7fd5, 115bd, 0e3fb, b21f6, f2d40, 033b3, 1948d, 7b876, c03ea, 53d8d, d02c0, 78ec6, d1e24, d6902, 79976, d69ac, 9e2af, e68d2, af5d8, 969bb, 0af74, e4878, 767f0, 25a04, 558e7, bda25, 55af9, 0be0f, ba780, 6c805, aeba1, 6b20d, f7df8, 093f2, 7259b, 70768, 8adf0, f30e1, d0bc0, bd511, 5ded6, 97698, 58f35, fe2d7, 375fa, b4149, f08f4, be143, beec8, 3f9d1, c9e17, 3d51f, a2cbe, 05b3b, 96a75, fb095, 78c4a, 39306, a8048, 73afd, 43949, e5021, 09bbc, 73084, c3379, fa158, 79698, 2c5a3, 291ca, 87402, 89e9b, a7813

2. Implement gemmainc function in keras.ops: This pull request implements the keras.ops.gammainc function, which computes the regularized lower incomplete gamma function element-wise for input tensors across multiple backends including NumPy, TensorFlow, PyTorch, and JAX, with comprehensive tests and examples, while excluding support for OpenVINO.

  • URL: pull/23365
  • Associated Commits: 4bc27, fc242, d51f9, df5af, 3f755, aa770, 80c10, fa9bd, 9538c, 2b62f, 41d59

3. Fix NumPy normalization for axis=0 in the keras.utils.normalize: This pull request fixes the normalization function in keras.utils.normalize to correctly handle the case when normalizing along axis=0 with zero values, preventing broadcasting errors by properly computing L2 norms and includes additional tests for this scenario.

  • URL: pull/23328
  • Associated Commits: 3db43, ba543, 89aec, c11ee, 0074c

Other Closed Pull Requests

  • Progress Bar in FeatureSpace.adapt: This pull request adds a progress bar to the FeatureSpace.adapt method in Keras using the Progbar utility to visually indicate the progress when called with verbose=1. It includes verification through a standalone script and static analysis to ensure proper functionality.
    • pull/22971
  • Image Operations Refactor: This pull request refactors image operations by deleting the existing image.py file, renaming a newly added file to image.py, and incorporating suggested improvements to streamline the codebase.
    • pull/23381
  • CallbackList Validation and Revert: One pull request fixes issue #23263 by implementing early validation in the CallbackList initialization to ensure all callbacks are valid instances, enabling fail-fast behavior on invalid callbacks. Another pull request reverts this change, undoing the validation fix introduced earlier.
    • pull/23368, pull/23407
  • PyTorch Backend Environment Fix: This pull request fixes the MultiProcessInitializeTest in the Keras PyTorch backend by modifying its tearDown method to restore environment variables instead of clearing them, preventing TorchInductor compilation failures caused by losing the PATH environment variable.
    • pull/23389
  • Security Fix in get_file Function: This pull request addresses a security vulnerability in the get_file function by preventing it from following symbolic links when writing downloaded files. It downloads to a unique temporary file, validates its hash, and atomically replaces the target file to avoid cache directory escapes or arbitrary file overwrites, with added regression tests.
    • pull/23049
  • LayerNormalization Axis Validation: This pull request improves the LayerNormalization layer by ensuring the build() method raises a descriptive ValueError for out-of-bounds axis indices and rejects duplicate axes by reusing the existing canonicalize_axes utility. This matches the behavior of compute_output_shape().
    • pull/23329
  • OpenVINO Backend Test Tolerance Relaxation: This pull request relaxes the test tolerance for the OpenVINO backend to ensure that the nightly release passes successfully.
    • pull/23394
  • GPTQ Quantize Matrix Division Fix: This pull request addresses a division by zero error in the gptq_quantize_matrix function by introducing a small epsilon to safeguard the division step, preventing NaN weight corruption during GPTQ error correction when calibration data causes Hessian diagonal elements to underflow or equal zero.
    • pull/23414
  • Security Improvements in Issue Triage Workflow: This pull request addresses two medium-severity security issues by replacing unsafe execSync shell interpolation with execFileSync to prevent shell injection and modifying the AI prompt context to include only filenames instead of sensitive source file contents, mitigating indirect data exfiltration risks.
    • pull/23192
  • Tversky Loss Bug Fix: This pull request fixes a bug in the keras.losses.tversky implementation where false-positive and false-negative terms were swapped, causing incorrect application of alpha and beta coefficients. The formulas are corrected so alpha properly weights false positives and beta properly weights false negatives according to the canonical Tversky index.
    • pull/23322
  • EpochIterator Warning Behavior Change: This pull request modifies the EpochIterator to issue a warning about running out of data only when the steps_per_epoch parameter is explicitly set by the caller, preventing misleading warnings during training with inputs of unknown length.
    • pull/23360
  • DTensor Distribution Utilities in PyTorch Backend: This pull request adds robust and optimized DTensor distribution utilities to the PyTorch backend, enabling multi-device scaling and model parallelism with functions like distribute_tensor, distribute_variable, and distribute_data_input, along with seamless layout mapping between Keras TensorLayout and PyTorch placement strategies.
    • pull/23366
  • JAX Backend Unsorted top_k Support: This pull request enables unsorted top_k output in the JAX backend by mapping Keras's sorted=False argument to is_stable=False in jax.lax.top_k. It includes a backward-compatible fallback for older JAX versions and adds comprehensive cross-backend unit tests for correctness.
    • pull/23367
  • CategoryEncoding Sparse Serialization Fix: This pull request fixes the serialization of the sparse argument in CategoryEncoding.get_config() to ensure layers built with sparse=True preserve this setting through serialization and deserialization, preventing silent reversion to sparse=False.
    • pull/23375
  • Array Unstacking Optimization: This pull request optimizes array unstacking in the Numpy and JAX backends by replacing explicit list comprehensions with list(backend.moveaxis(x, axis, 0)), significantly improving tracing and execution performance.
    • pull/23388
  • Temporary CPU Test Unparallelization: This pull request is a temporary testing change that unparallelizes CPU tests to reproduce a nightly error related to Torch and is explicitly marked not to be reviewed or merged.
    • pull/23390
  • Unpack_ternary Function Fix: This pull request fixes the unpack_ternary function to correctly decode signed int8 packed tensors by remapping negative values back to their original unsigned form after casting, ensuring accurate and lossless handling of base-3 ternary values during save and load operations.
    • pull/23391
  • Embedding.enable_lora Bug Fix: This pull request fixes a bug in Embedding.enable_lora() where after int4 quantization, the code incorrectly freezes a temporary unpacked tensor instead of the actual embedding variable, causing an AttributeError on the numpy backend. It includes a new test to catch this issue across all backends.
    • pull/23393
  • Zizmor Warning Fix: This pull request fixes a zizmor warning related to the dorny/path-filter by specifying the exact version 4.0.2.
    • pull/23395
  • Pluggable Backend Refactor and Initial Support: One pull request implements an initial refactor of the pluggable backend by moving operations out of the backend namespace into backend.ops, cleaning up the namespace, and removing OpenVino as a test candidate. Another pull request introduces initial support for the MLX pluggable backend, enhancing extensibility and integration capabilities.
    • pull/23396, pull/23410
  • Squareplus Operation Fallback: This pull request adds a fallback implementation for the squareplus operation to ensure functionality when the backend lacks native support.
    • pull/23405

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 134 2 0 0
pctablet505 112 6 0 0
hertschuh 49 5 0 46
buildwithsuhana 76 12 0 5
rstar327 32 0 0 0
goyaladitya05 22 3 0 0
shashaka 23 1 0 0
divyashreepathihalli 21 0 0 0
gaga1313 16 5 0 0
LinZiyuu 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.