Weekly Project News

Archives
Subscribe

Weekly GitHub Report for Keras: July 20, 2026 - July 27, 2026 (22:03:55)

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 with sharding and step recovery, new quantization methods including Activation-aware Weight Quantization, and a ScheduleFreeAdamW optimizer. It also significantly enhances OpenVINO backend support with numerous NumPy, neural network, and control flow operations, adds batch renormalization and gated attention layers, and improves multi-backend NumPy operations and preprocessing capabilities.

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:SUPPORT] [KERAS-TEAM-REVIEW-PENDING] Request to update pinned issues #19519 and #18442 to help contributors align with current priorities: This issue requests the Keras team to update two pinned issues—the Development Roadmap and the Contributing Guide—to reflect completed features and current priorities, helping contributors better align their efforts with the project's status. It also inquires about the status and community contribution opportunities for various backends, including MLX, OpenVINO, and potential new community-driven backends like PaddlePaddle.

    • The comments acknowledge the report and confirm plans to update the pinned issues; a community member emphasizes the importance of keeping documentation current to avoid confusion and improve contributor experience, while also seeking clarification on contributors' use cases for the roadmap and guide.
    • Number of comments this week: 2
  2. [TYPE:BUG] [Bug] ModelCheckpoint accepts relative traversal paths without validation: This issue reports that the keras.callbacks.ModelCheckpoint function accepts relative file paths containing directory traversal components like ../ without validating them, which can lead to checkpoint files being written outside the intended directory. Although this behavior is by design, it poses potential security risks in multi-tenant or shared environments where the filepath parameter might be controlled by untrusted users, possibly allowing arbitrary file overwrites.

    • The comments acknowledge the issue and confirm it can be reproduced in a recent Keras version; one participant expresses interest in taking on the issue for resolution.
    • Number of comments this week: 2
  3. [TYPE:BUG] Models do not propagate symbolic masks when called with symbolic inputs.: This issue reports that models built with keras_core do not propagate symbolic masks correctly when called with symbolic inputs, leading to attribute errors and inconsistent behavior compared to tf.keras. The problem is particularly evident when using component models, such as separate encoder and decoder models in transformers, where masking warnings and errors occur, causing differences in training behavior and runtime exceptions.

    • The comments discuss the nature of symbolic mask propagation in keras_core, clarifying that mask handling differs from tf.keras and that some errors arise from mixing tensors and non-tensors in nested calls. Workarounds like splitting nested arguments are suggested, but concerns remain about the impact on model refactoring practices, especially for complex models like transformers.
    • Number of comments this week: 1
  4. [TYPE:FEATURE] [KERAS-TEAM-REVIEW-PENDING] 🚀 Contributing to Keras 🚀: This issue is an open invitation for contributions to the Keras 3 project, outlining various tasks such as updating data preprocessing layers, adding backend support for different frameworks, improving the KerasHub ecosystem, converting examples to Keras 3, and increasing test coverage. It serves as a central discussion and coordination point for contributors interested in enhancing Keras by taking on specific features, fixing TODOs, or adding new examples and functionalities.

    • The comments include contributors expressing interest in various tasks, asking for guidance on contribution processes, clarifications on implementation details, and updates on progress; maintainers provide directions, clarify expectations, and encourage opening pull requests for review.
    • Number of comments this week: 1
  5. [STAT:AWAITING RESPONSE FROM CONTRIBUTOR] [TYPE:BUG] Issue with Backpropagation on keras.ops.while_loop (in Jax): This issue describes a problem with backpropagation when using the keras.ops.while_loop function in the JAX backend, where the forward pass works correctly but the reverse-mode differentiation fails due to JAX's limitations with dynamic start/stop values in loops. The user reports that while TensorFlow and PyTorch backends handle this scenario without issues, JAX raises a ValueError suggesting the use of lax.scan or a fixed iteration loop instead.

    • The comments acknowledge the issue as specific to JAX and recommend following the error message's advice to use lax.scan or a fixed-length loop; it is noted that this limitation is inherent to JAX rather than Keras, and a workaround using jax.lax.scan is provided with a reference gist for implementation.
    • Number of comments this week: 1

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:

  • Documentation and Project Management Updates: This topic covers requests to update key project documents to reflect completed features and current priorities, which helps contributors align their efforts with active development. It also includes clarifications on backend ecosystems and community-driven backend proposals to improve overall project transparency and guidance.
  • issues/23308
  • Security Concerns in File Path Handling: This topic addresses the security risk in keras.callbacks.ModelCheckpoint where relative file paths with directory traversal components are accepted without validation. This flaw can allow checkpoint files to be written outside intended directories if the filepath parameter is exposed to untrusted users, posing potential security vulnerabilities.
  • issues/23312
  • Image Loading and Decompression Protection: This topic involves improving documentation for keras.utils.load_img() to clarify its use of Pillow's decompression bomb protection. It highlights that a DecompressionBombError is raised when loading images exceeding Pillow's maximum pixel size limit, ensuring users understand the safety mechanisms in place.
  • issues/23317
  • Enhancements to Image Patch Reconstruction: This topic tracks planned incremental improvements to the keras.ops.image.reconstruct_patches function, including features like auto-inference of output_size for valid padding, dilation support, overlapping patch handling with reduction methods, and dynamic tensor-valued output_size support. These enhancements aim to increase the function's flexibility and usability in image processing tasks.
  • issues/23318

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

Summarized Issues:

  • Weight loading incompatibility between custom and standard LSTM layers: Loading weights from a model with a custom LSTM layer into a model with a standard LSTM layer fails because the expected variables are missing, causing confusion about Keras's support for weight loading between topologically identical models with different layer classes. This behavior is clarified as not officially supported, highlighting a limitation in model interoperability.
  • issues/20322
  • Image patch extraction and reconstruction operations: There is a proposal to add an inverse operation to keras.ops.image.extract_patches by implementing reconstruct_patches and corresponding 2D and 3D layer wrappers. This addition aims to fill a usability gap and achieve parity with PyTorch's fold/unfold operations for reconstructing images from patches in non-overlapping cases.
  • issues/22951
  • Class weight handling with tf.data.Dataset inputs: Using class_weight with tf.data.Dataset inputs causes an out-of-range error when some class weights are omitted, unlike array inputs where missing weights default to 1.0 without error. This inconsistency leads to unexpected failures during training with dataset inputs.
  • issues/23071
  • NaN gradients in L2 normalization on torch backend: The keras.ops.normalize function with order=2 on the torch backend uses a raw rsqrt on zero vectors, causing NaN gradients because the epsilon guard only protects the forward pass, not the backward gradient computation. This instability can be fixed by clamping inputs to rsqrt to ensure finite gradients during backpropagation.
  • issues/23075
  • Deadlock in model.fit() on macOS Apple Silicon due to thread pool conflict: A deadlock occurs causing model.fit() to hang indefinitely when StringLookup.adapt() is called, triggered by importing pandas before TensorFlow. The issue arises from a thread pool conflict between their C extensions on macOS Apple Silicon with TensorFlow 2.21.0 and Python 3.13.
  • issues/23083
  • Lack of validation for non-finite values in affine_transform: The keras.ops.image.affine_transform function does not validate its transformation matrix for NaN or Inf values, allowing corrupted output tensors filled with NaN to propagate silently. This can compromise downstream training or inference without raising errors or warnings.
  • issues/23194
  • Dimension mismatch with Masking layer and CTC loss: A runtime error occurs in reduce_weighted_values during model fitting when using a Masking layer combined with CTC loss, due to the CTC loss returning one loss value per sequence in a batch. This causes a dimension mismatch during tensor multiplication, leading to a failure.
  • issues/23228
  • Multiple backend issues in keras.ops.average function: The keras.ops.average function has critical problems across backends, including mathematically incorrect weighted averages in OpenVINO, axis mismatches causing silent errors in Torch, shape mismatches and crashes in TensorFlow, and inconsistent error handling with 1D weights. These issues affect reliability and correctness of averaging operations.
  • issues/23250
  • Incorrect output shape inference in keras.ops.select: The keras.ops.select method incorrectly infers output shape by returning the shape of the first choice without considering broadcasting across all inputs. This leads to mismatches between inferred and actual output shapes, causing potential downstream errors.
  • issues/23264
  • Race condition in PyDataset with multiple workers: A race condition in PyDataset's on_epoch_begin method causes the worker pool to start before the method completes when using multiple workers. This results in workers requesting batches from outdated or partially updated data, leading to silent data inconsistencies, non-deterministic fitting, or crashes due to missing attributes.
  • issues/23283

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

Key Open Pull Requests

1. 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

2. Auto-infer output_size for padding="valid" in keras.ops.image.reconstruct_patches: This pull request improves the keras.ops.image.reconstruct_patches function by making the output_size parameter optional when using padding="valid" with non-overlapping patches, automatically inferring the output size from the patch grid to simplify usage and enhance error checking in both eager and symbolic execution modes across data formats.

  • URL: pull/23319
  • Associated Commits: e14fd, b459e, dac48

3. Fix keras.ops.multiply returning NaN instead of signed Inf for inf * subnormal (TF backend): This pull request fixes the TensorFlow backend of keras.ops.multiply to correctly return signed infinity instead of NaN when multiplying infinity by a float32 subnormal number by detecting and repairing the hardware-induced flushing of subnormal operands to zero using raw bit-pattern inspection, ensuring consistency with NumPy and PyTorch behavior while preserving correct handling of genuine inf * 0 cases and maintaining efficient execution without added overhead for normal multiplies.

  • URL: pull/23320
  • Associated Commits: 48a9a, 2eb03, 45b20

Other Open Pull Requests

  • Quantization fixes and serialization improvements: This set of pull requests fixes the GPTQ/AWQ quantization process by ensuring only layers inside the defined quantization structure are calibrated and quantized, preventing saving uncalibrated quantized layers to avoid corrupted files. It also resolves issues with missing kernel variables causing load failures, improves serialization by removing live layer references from config objects, and adds comprehensive tests for save/load integrity and error handling.
  • [pull/23321]
  • PyTorch backend parallelism support: These pull requests add Model Parallel support by integrating Keras 3 ModelParallel distributions with PyTorch's DTensor infrastructure, enabling sharding of model weights and activations across multiple devices. They also add data parallelism support by integrating PyTorch's DistributedDataParallel wrapper into the training loop, updating step functions for automatic gradient synchronization, translating Keras DeviceMesh into PyTorch Process Groups, and synchronizing metric variables across devices.
  • [pull/23313, pull/23316]
  • Loss function bug fixes and additions: These pull requests fix a bug in the keras.losses.tversky implementation where false-positive and false-negative terms were swapped, correcting the formulas so that alpha and beta coefficients are applied correctly. Additionally, a new Intersection over Union (IoU) loss function is added as a standard loss in Keras for computer vision tasks, implementing the standard IoU loss formula with safeguards against division by zero.
  • [pull/23322, pull/23332]
  • Metric bug fixes and robustness improvements: These pull requests fix a mathematical bug in the R2Score metric's Adjusted R² calculation by correcting sample size determination in multi-output regression, ensuring accurate penalty terms and proper handling of sample weights. They also fix a robustness bug in the FBetaScore metric by replacing a hardcoded dimension expansion with a dynamic rank-matching loop to correctly broadcast sample weights and prevent crashes.
  • [pull/23334, pull/23335]
  • Backend performance and error handling improvements: These pull requests fix a performance regression in torch.compile by skipping a pybind11 kernel support probe during tracing, resulting in zero graph breaks and significant speedup in compiled transformer model inference. They also improve error handling in the LayerNormalization layer by extracting axis bounds checks into a shared method to raise descriptive errors consistently, and improve the get_file function by validating file names to prevent directory traversal and path resolution issues.
  • [pull/23327, pull/23329, pull/23330, pull/23336]
  • TraceContext error fix in NNX backend: This pull request fixes a TraceContext error in the NNX backend by running call() inside jax.eval_shape for shape inference when building layers without a build() method, preventing trace-level guard errors caused by sublayers being built inside the trace.
  • [pull/23326]

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

Key Closed Pull Requests

1. Adding Torch Support for Model Parallel & Data Parallel : This pull request introduces comprehensive support for distributed training in the PyTorch backend by enabling both Data Parallelism through native DistributedDataParallel and Model Parallelism via PyTorch DTensor integration, aligning the backend with the Keras 3 distribution API to allow seamless scaling of models across multiple devices and hosts with minimal code changes.

  • URL: pull/22638
  • Associated Commits: 05593, daa7a, 8e947, f2a8b, 39cbd, 9dce1, dc00b, ada69, a7001, cc64a, 55068, c30ae, 02819, e1bb4, 87ba9, 918d6, 9aeb2, 21897, 3409d, 232f5, 378e9, c51ab, 77378, 5b3f5, 1d8e0, 3d75a, 8bd33, 0d12d, 6f91a, 91335, 67749, 76715, eaab4, bd1bf, 45a36, c8483, 743f1
  • Associated Commits: 05593, daa7a, 8e947, f2a8b, 39cbd, 9dce1, dc00b, ada69, a7001, cc64a, 55068, c30ae, 02819, e1bb4, 87ba9, 918d6, 9aeb2, 21897, 3409d, 232f5, 378e9, c51ab, 77378, 5b3f5, 1d8e0, 3d75a, 8bd33, 0d12d, 6f91a, 91335, 67749, 76715, eaab4, bd1bf, 45a36, c8483, 743f1

2. Add support for Model Parallel and Data Parallel distribution in Torch backend: This pull request introduces comprehensive support for distributed training in the PyTorch backend by enabling both model parallelism and data parallelism through integration of PyTorch-native distributed primitives with the Keras distribution API, enhancing Variable implementations to be layout-aware for automatic DTensor management, updating the TorchTrainer to wrap models in DistributedDataParallel with correct process group resolution, adding synchronization for metric variables across processes, and providing new utility functions and tests to ensure robust multi-device and multi-node training capabilities.

  • URL: pull/23310
  • Associated Commits: a8d05, c2efe, dee05, c60ff, 4e056, 60805, 54751, 1bc40
  • Associated Commits: a8d05, c2efe, dee05, c60ff, 4e056, 60805, 54751, 1bc40

3. Stabilize container weight paths across compatible layer subclasses: This pull request aims to stabilize container weight serialization paths across compatible layer subclasses by deriving save/load keys from the saveable object type rather than concrete class names, thereby enabling seamless weight loading between custom subclasses and base classes like LSTM, and includes a regression test to validate this behavior.

  • URL: pull/23216
  • Associated Commits: 29b3f, 065da, 9b3ff, e56e8, c1afb, bb028, e2db2
  • Associated Commits: 29b3f, 065da, 9b3ff, e56e8, c1afb, bb028, e2db2

Other Closed Pull Requests

  • PyTorch backend distribution and parallelism enhancements: Multiple pull requests introduce foundational PyTorch distribution utilities, device management, and support for model and data parallelism in Keras. These changes include multi-host distributed initialization, integration with TorchTrainer, and distribution-aware variable handling to enable future DataParallel and ModelParallel functionalities.
  • [pull/23052, pull/23311]
  • Fixes to keras.ops functions for correctness and dtype handling: Several pull requests address bugs and improve dtype inference in keras.ops functions such as logsumexp, normalize, select, and average. These fixes ensure consistent behavior across backends by correcting dtype promotion, gradient computation, broadcasting, and weighted average calculations to match NumPy semantics.
  • [pull/23307, pull/23093, pull/23265, pull/23249]
  • Image ops improvements and new features: Pull requests add new image processing functions like euclidean_dist_transform, enhance existing functions such as reconstruct_patches with channels_first support, and add validation to affine_transform. These changes improve multi-backend support, data format handling, and robustness by validating inputs and expanding functionality for segmentation and transformation tasks.
  • [pull/23120, pull/23267, pull/23204]
  • Fixes and improvements in dataset handling and multiprocessing: Pull requests fix issues in dataset adapters including class weight handling, multiprocessing safety on JAX GPU, and deterministic shuffling in image_dataset_from_directory. These changes add regression tests, warnings, and fallback mechanisms to ensure stable and correct dataset processing across different backends and multiprocessing configurations.
  • [pull/23073, pull/23176, pull/23109]
  • Loss function serialization and reduction fixes: Fixes address serialization bugs in loss classes like Huber and CosineSimilarity to preserve numeric hyperparameters during save/load cycles, and improve loss reduction in the PyTorch backend by adjusting mask and sample_weight tensor ranks. These ensure consistent loss computation and correct behavior after model serialization.
  • [pull/23286, pull/23235]
  • Performance and workflow improvements: One pull request optimizes multi-step output concatenation by reducing memory copying complexity, while another modifies the PyDataset workflow to ensure on_epoch_begin callbacks complete before worker pool startup. These changes improve execution speed and data consistency during training.
  • [pull/23305, pull/23284]
  • Security and environment fixes: Security is enhanced by restricting unpickling in CIFAR dataset loading and removing privileged container options in CPU tests. Additionally, a deadlock on Mac M architecture caused by premature pandas import is fixed by lazy importing within tests.
  • [pull/23252, pull/23254, pull/23306]
  • Bug fixes in backend operations and regression restorations: Fixes include correcting the handling of keras.ops.roll parameters to match NumPy broadcasting, restoring dynamic tensor size support in ops.image.resize, and fixing histogram shape issues in OpenVINO's Equalization operation. These ensure backend consistency and prevent runtime errors.
  • [pull/23242, pull/23315, pull/23304]

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 100 4 0 0
MarcosAsh 63 0 0 0
buildwithsuhana 41 15 1 4
hertschuh 6 3 0 20
TheManishCode 7 2 0 5
SID-6921 12 2 0 0
brianmanderson 5 2 1 5
ChiragSW 6 1 0 3
shashaka 6 1 0 1
deepakkumar1984 8 0 0 0

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