Weekly Project News

Archives
Subscribe

Weekly GitHub Report for Keras: September 21, 2026 - September 28, 2026 (20:37:51)

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, 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] keras.ops.std reports complex dtype for symbolic complex inputs: This issue addresses a discrepancy in Keras where the keras.ops.std function reports a complex data type for symbolic complex inputs, but the actual evaluated output is a real-valued tensor, causing a mismatch between the model's advertised output dtype and the true output dtype. The reporter suggests that the symbolic output dtype should be corrected to reflect the real dtype for complex inputs, aligning with NumPy's behavior, and offers to prepare a focused fix pending maintainer approval and assignment.

    • The comments show the reporter volunteering to fix the issue, receiving confirmation and assignment from a maintainer, and sharing a reproducible gist; other participants acknowledge the report and express intent to review the problem.
    • Number of comments this week: 6
  2. [GOOD FIRST ISSUE] [TYPE:BUG] keras.ops.cov fallback is incorrect for complex inputs: This issue addresses a bug in the backend-agnostic fallback implementation of keras.ops.cov where the covariance calculation for complex inputs is incorrect due to the use of a plain transpose instead of a conjugate transpose, resulting in non-Hermitian covariance matrices. The reporter proposes a fix that involves using the conjugate transpose for complex covariance calculations, adding regression tests for complex inputs, and ensuring real-valued behavior remains unchanged.

    • The comments show the original reporter expressing willingness to fix the issue and asking about assignment, but maintainers indicate that a solution is already in progress in a separate pull request, advising the reporter to pick a different issue to avoid duplication.
    • Number of comments this week: 3
  3. [GOOD FIRST ISSUE] [TYPE:BUG] [BACKEND:TORCH] [BACKEND:TENSORFLOW] [BACKEND:JAX] [BACKEND:OPENVINO] NumPy and JAX backends: binary_crossentropy does not return the dtype of output: This issue addresses a dtype inconsistency in the binary_crossentropy operation across NumPy and JAX backends, where the eager execution result does not always match the dtype of the output tensor as specified by BinaryCrossentropy.compute_output_spec. The problem arises due to missing casts of the target tensor to the output dtype and improper handling of integer or boolean outputs, leading to unexpected type promotions and incorrect loss computations; a detailed fix involving casting rules and additional tests has been proposed and partially implemented in related pull requests.

    • The comments discuss a contributor volunteering to fix the issue, the submission of a patch covering NumPy and JAX backends with regression tests, and a detailed explanation of the necessary dtype casting rules including the floatx rule for integer and boolean outputs; the fix depends on merging related PRs in a specific order and adding comprehensive tests to ensure consistent dtype behavior across multiple backends.
    • Number of comments this week: 3
  4. [BACKEND:JAX] convert_to_tensor(x, dtype=None) casts non-tensor inputs to float under floatx="bfloat16" on JAX and numpy: This issue addresses a problem where the convert_to_tensor function in Keras, when used with floatx="bfloat16", incorrectly casts non-tensor inputs to float32 on JAX and float64 on numpy instead of preserving their original dtypes. The proposed fix involves changing the dtype guard condition to check for an explicit "bfloat16" dtype and adjusting the resolution of weak integer types to ensure consistent and accurate dtype handling across multiple backends, preventing unintended type casting and overflow errors.

    • The comments clarify that a previous duplicate issue was closed in favor of this one, confirm that part 1 of the fix correctly resolves the JAX backend issue, and explain that part 2 is necessary to fix numpy and other backends by resolving weak integer types to at least 32 bits; they also outline the remaining work including merging related pull requests and adding comprehensive tests.
    • Number of comments this week: 2
  5. [GOOD FIRST ISSUE] [BACKEND:TORCH] [BACKEND:TENSORFLOW] [BACKEND:JAX] result_type resolves a Python float to float16 when floatx is bfloat16: This issue addresses a problem in Keras where the function result_type incorrectly resolves a Python float to float16 instead of bfloat16 when the global float precision setting floatx is set to "bfloat16". This causes various operations involving weak float types and integer inputs to produce results in float16, which has a smaller exponent range and can lead to overflow errors, inconsistent behavior across backends, and failures in certain functions like sqrt, log, and ssim on multiple backends including numpy and openvino.

    • The comment confirms interest in working on the issue and provides a detailed summary of the proposed fixes, including changes to dtype resolution logic, casting inputs in several operations, and adjustments to kernel creation for image processing; it also notes the addition of comprehensive tests and dependencies on related pull requests to fully resolve the problem.
    • Number of comments this week: 2

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

Summarized Issues:

  • Dtype handling inconsistencies across backends and functions: Multiple issues report inconsistent dtype handling in Keras operations, including incorrect casting of inputs in convert_to_tensor with floatx="bfloat16", mismatched output dtypes in torch backend Dense layers, and improper dtype promotion in normalization and crossentropy functions. These inconsistencies cause errors, precision loss, and unexpected behavior across backends like JAX, NumPy, Torch, and TensorFlow, necessitating unified dtype resolution and casting rules to ensure consistent and correct computations.
  • issues/23703, issues/23704, issues/23708, issues/23712, issues/23735, issues/23736, issues/23750, issues/23751, issues/23752, issues/23753, issues/23754
  • Symbolic shape and dtype mismatches in ops: Several issues highlight bugs where symbolic shapes or dtypes do not match eager execution results, such as slogdet output shape mismatches, multi_hot returning incorrect dtypes, and std reporting complex dtypes incorrectly. These mismatches cause errors or inconsistencies in model building and execution, requiring fixes to align symbolic specs with actual computed outputs.
  • issues/23730, issues/23742, issues/23748
  • Backend-specific bugs and inconsistencies: Multiple issues report backend-specific problems including OpenVINO returning incorrect dtypes and values, kernel implementations ignoring specs or producing wrong results across Torch, TensorFlow, NumPy, OpenVINO, and JAX, and the Torch backend producing mixed float32/float64 outputs without warnings. These backend discrepancies cause models to behave differently depending on the runtime environment, highlighting the need for backend conformance and bug fixes.
  • issues/23756, issues/23757, issues/23704
  • Bugs in Keras ops related to pooling, normalization, and covariance: Issues describe bugs in adaptive_max_pool and adaptive_average_pool causing incorrect output shapes and crashes, normalization ops truncating values improperly, and covariance ops producing incorrect results for complex inputs due to missing conjugate transpose. These bugs lead to incorrect outputs or runtime errors in common Keras operations and require fixes for correct shape inference and computation.
  • issues/23708, issues/23718, issues/23724, issues/23725, issues/23727
  • Errors and exceptions due to attribute handling and module availability: Some issues report bugs where properties like LazyModule.available and OrbaxLazyModule.available raise AttributeErrors instead of returning booleans, caused by missing attributes in partially uninstalled packages or older versions. These cause unhandled exceptions and confusing error messages in Keras code relying on these properties.
  • issues/23709, issues/23710
  • Incorrect handling of input arguments and shapes causing crashes or wrong outputs: Several issues describe problems with improper input normalization or validation, such as one_hot mishandling negative axes, batch_normalization failing shape validation due to a typo, categorical_crossentropy ignoring axis arguments, and affine_transform lacking validation on transform shape. These lead to crashes, incorrect output shapes, or silent errors in Keras operations.
  • issues/23733, issues/23740, issues/23741, issues/23766
  • Bounding box transformation misalignments in image preprocessing: Multiple issues report that bounding box transformations in data augmentation layers like RandomShear, RandomRotation, and resizing layers produce misaligned boxes due to coordinate system mismatches or rounding differences, causing inaccurate bounding box placement relative to images.
  • issues/23771, issues/23772, issues/23773
  • Model and layer attribute management bugs: One issue describes a bug where deleting a sub-layer attribute does not properly untrack its weights from the parent layer, causing lingering references and incorrect weight tracking, unlike deleting a Variable.
  • issues/23761
  • Documentation inaccuracies in MobileNet modules: An issue addresses multiple documentation errors in MobileNet variants, clarifying limitations and correcting parameter descriptions related to ImageNet weights and depth_multiplier.
  • issues/23764
  • Potential performance improvement inquiry for torch.compile: One issue questions enabling the fullgraph=True option in torch.compile within the model training API to possibly prevent graph breaks and improve performance, suggesting a configuration consideration rather than a bug.
  • issues/23775
  • Input argument canonicalization and conversion issues causing model reload failures: An issue reports that many backend operations do not properly canonicalize list/tuple arguments or convert Python inputs before attribute access, causing Functional models to fail after saving and reloading with .keras. A comprehensive fix is proposed to standardize input handling across backends.
  • issues/23755

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

Summarized Issues:

  • Backend API and Operation Issues: Several issues highlight problems with backend-specific operations and API design in Keras. These include the proposal for a backend-agnostic functional API to simplify gradient computations, bugs in backend implementations like OpenVINO and JAX causing failures in loops and tensor conversions, and a refactor that broke operation resolution in the DynamicBackend class, all of which disrupt model functionality and developer experience.
  • [issues/22442, issues/23612, issues/23679, issues/23692]
  • Model Serialization and Memory Usage: One issue reports that TensorFlow's Keras model export serializes each model weight twice, once as a keras.Variable and once as a raw tf.Variable. This duplication leads to doubled artifact size on disk and increased live memory usage, negatively impacting deployment scenarios like TF Serving.
  • [issues/23553]
  • Community and Contribution Process: A contributor expressed concern about delayed pull request reviews and questioned the availability of reviewers. Maintainers responded by explaining variable review times and closed the issue as a duplicate and for not following contribution guidelines.
  • [issues/23707]

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

Key Open Pull Requests

1. Eliminates TorchDynamo graph breaks during torch backend model compilation.: This pull request improves the PyTorch backend model compilation by eliminating TorchDynamo graph breaks during jit_compile=True through using functional autograd operations, preserving correct backward behavior with DistributedDataParallel, fixing tree traversal identity checks to prevent cache invalidations, detaching loss tensors to avoid autograd graph retention, and caching backend modules to reduce dynamic imports, resulting in a fully fused end-to-end computation graph with significantly faster compilation, higher training throughput, and stable multi-batch multi-epoch execution without recompilations.

  • URL: pull/23744
  • Associated Commits: 203d4, 2bbaf, 361de, 9c09a, 2a80f, 5ee6e, 37407

2. Fix MultiHot.compute_output_spec to use self.dtype instead of inputs.dtype: This pull request fixes the MultiHot.compute_output_spec method in keras/src/ops/nn.py to use self.dtype instead of inputs.dtype and forwards sparse=self.sparse in MultiHot.call to align with eager execution, while also adding symbolic dtype tests in keras/src/ops/nn_test.py.

  • URL: pull/23738
  • Associated Commits: b32ae, 2591f, 7d413, 89e93, bc06b, 48dc2

3. Fix several Doc issues for mobilenet, mobilenet_v2, and mobilenet_v3: This pull request fixes several documentation issues in the mobilenet, mobilenet_v2, and mobilenet_v3 modules of the Keras project, addressing the problems outlined in issue #23764.

  • URL: pull/23765
  • Associated Commits: 22053, d8211, 91049, c7fc5, 073f6

Other Open Pull Requests

  • LazyModule and optional dependency handling: This pull request improves LazyModule handling of namespace packages by treating empty leftover directories and attribute-less modules as unavailable, catching both ImportError and AttributeError during initialization to prevent unexpected failures. It also adds caching and availability checks to ensure robust detection of optional dependencies like TensorFlow and Orbax.
    • pull/23713
  • CategoricalCrossentropy output spec and dtype consistency: These pull requests fix the CategoricalCrossentropy.compute_output_spec method to correctly handle the axis argument and align behavior with SparseCategoricalCrossentropy, including new unit tests. Additionally, they ensure that categorical_crossentropy and sparse_categorical_crossentropy functions preserve output tensor data types consistently across backends by casting targets to the output dtype and adding parameterized tests.
    • pull/23737, pull/23747
  • Covariance and standard deviation ops for complex inputs: These pull requests fix the keras.ops.cov function to correctly handle complex inputs using conjugate transpose and preserve complex dtype, and fix keras.ops.std to report the correct real data type for symbolic complex inputs. Both include comprehensive tests across multiple backends to validate the fixes.
    • pull/23719, pull/23749
  • Gaussian blur kernel and adaptive pooling shape fixes: These pull requests address consistent interpretation of Gaussian blur kernel dimensions across backends by fixing kernel ordering and padding, and fix symbolic output shape inference in adaptive pooling layers by correcting batch dimension slicing, normalizing output_size, and standardizing data_format handling with comprehensive tests.
    • pull/23723, [pull/23714](https://github.com/keras-team/keras/pull/23714], pull/23720
  • Floatx and dtype promotion fixes for bfloat16 and normalization ops: These pull requests fix weak-float precision issues by mapping float16 to bfloat16 when floatx is bfloat16 and update numpy ufuncs to cast inputs to floatx to prevent crashes. They also update rms_normalization and layer_normalization to promote integer and boolean inputs to float output dtype to avoid truncation and ensure consistent float computation results.
    • pull/23729, pull/23711
  • Binary crossentropy dtype preservation: This pull request fixes the binary_crossentropy function in Keras NumPy and JAX backends to preserve output dtype by casting the target to the output's dtype, correcting type promotion issues with integer, boolean, and mixed float dtypes, and adds parameterized tests for consistent behavior.
    • pull/23745
  • Ops API migration to backend.ops for performance: These pull requests migrate calls from the public ops.* API to the more direct backend.ops.* API within concrete execution paths of attention layers and the distillation folder to optimize performance by bypassing symbolic-dispatch checks, while retaining necessary symbolic support in specific cases.
    • pull/23716, pull/23717
  • Serialization and symbolic shape fixes: These pull requests fix serialization of the axis argument in keras.metrics.CosineSimilarity to prevent silent behavior changes, fix symbolic shape inference bugs in Slogdet.compute_output_spec to correctly handle batch dimensions, and fix a typo causing AttributeError in BatchNorm.compute_output_spec with added symbolic tests.
    • pull/23717, pull/23728, pull/23739
  • One-hot axis normalization across backends: This pull request fixes handling of negative axis values less than -1 in the one_hot operation across PyTorch, TensorFlow, and symbolic KerasTensor modes by normalizing the axis before processing, ensuring consistent behavior with JAX and NumPy, and includes test cases to verify the fix.
    • pull/23734
  • Tensor conversion in adaptive pooling TensorFlow backend: This pull request fixes an AttributeError caused by passing NumPy array inputs to TensorFlow backend adaptive pooling functions by converting inputs to tensors before accessing shape attributes.
    • pull/23728
  • Quantization framework modernization and bug fixes: These pull requests retire legacy per-mode dispatch in quantization by consolidating quantizable layers and standardizing Layer.quantize, fix bugs in quantized dtype policy handling to forward parameters correctly and use layer-specific modes, and fix corrupted policy name suffixes in GPTQDTypePolicy and AWQDTypePolicy to enable proper checkpoint loading.
    • pull/23760, pull/23762, pull/23763
  • Contributor workflow and PR template updates: This pull request adds a workflow that automatically converts external contributor pull requests to draft status if they lack a linked approved issue assigned to the author, and updates the pull request template to reference the project's PR policy documentation instead of the original RFC issue to reduce excessive cross-referencing.
    • pull/23768
  • Backend namespace cleanup and security improvements: These pull requests clean up the backend namespace for pluggable backends by organizing configuration constants within each backend's __init__.py file, and restrict permissions of the world-writable /tmp/.keras fallback directory to owner-only access to enhance security on multi-user systems.
    • pull/23770, pull/23774

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

Key Closed Pull Requests

1. Fix saved model variables: This pull request fixes the issue of duplicate variable storage during TensorFlow SavedModel export by ensuring that endpoint-captured tf.Variable objects are used for variable collections, preventing variables from being stored twice in the checkpoint while maintaining compatibility with LiteRT.

  • URL: pull/23563
  • Associated Commits: 68bd1, d282a, d0d26, a4ac1, 2fe8f

2. Add an experimental keras.ops.grad and port the gradient tests to it: This pull request introduces an experimental function keras.ops.grad for computing gradients, ports existing gradient tests to use this new function, and includes backend-specific support flags and comprehensive test coverage while maintaining compatibility with TensorFlow, JAX, Torch, and handling unsupported backends by raising errors.

  • URL: pull/23670
  • Associated Commits: bf06d, 34f16, 31e66, 02730, e8719

3. Add use_backend_agnostic_ops test decorator to simplify dual-path op testing: This pull request introduces the @use_backend_agnostic_ops test decorator to streamline and automate the parameterization of test cases for operations, enabling them to run seamlessly in both backend-specific and backend-agnostic modes while reducing repetitive boilerplate code.

  • URL: pull/23686
  • Associated Commits: 1bb48, 03880, a1370, 0cd44

Other Closed Pull Requests

  • Backend-agnostic operation implementations: Multiple pull requests introduce backend-agnostic implementations of various operations such as deg2rad, fmin, angle, rad2deg, and fmax in the Keras project, ensuring compatibility across different computational backends. These changes also include updates to related tensor conversion methods and internal functions to maintain consistency and correctness.
    • pull/23722, pull/23767, pull/23706, pull/23743, pull/23758, pull/23759
  • Quantization geometry protocol refactoring: Several pull requests refactor layers such as Embedding, ReversibleEmbedding, and TernaryDense to implement the quantization geometry protocol by returning appropriate geometry objects and removing per-mode methods and overrides. These changes unify projection logic, improve weight storage checks, and ensure compatibility across TensorFlow, JAX, and Torch without altering output behavior.
    • pull/23630, pull/23746, pull/23721
  • Backend and ops package updates: A pull request updates the DynamicBackend in Keras to resolve backend operations through the new ops subpackage instead of deprecated flat re-exports, providing compatibility fallbacks and improving error handling and private attribute lookups.
    • pull/23693
  • PyTorch DTensor integration for model-parallel training: One pull request completes the integration of PyTorch DTensor in TorchTrainer by adding automatic data sharding, updating training loops for sharded inputs, enhancing distributed data loading, synchronizing weights across the model-parallel mesh, and including integration tests for end-to-end functionality.
    • pull/23404
  • Validation and bug fixes in loss functions and backends: Pull requests implement validation for the label_smoothing parameter in categorical and binary crossentropy loss functions, ensuring values outside [0,1] raise errors, and fix the JAX backend's convert_to_tensor to correctly handle floatx set to bfloat16 only when an explicit dtype is provided.
    • pull/23504, pull/23682
  • Test reliability improvements: A pull request addresses intermittent failures in the LinalgOpsCorrectnessTest.test_cholesky by introducing a fixed random seed, adjusting the test matrix for well-conditioned inputs, and relaxing floating-point tolerances to reduce errors caused by rounding differences.
    • pull/23705
  • Seed serialization fixes in layers: One pull request fixes the omission of the seed argument in the get_config methods of SimpleRNN and RandomGrayscale layers, ensuring proper serialization and preservation of randomness during save and reload, consistent with other similar layers, and updates tests accordingly.
    • pull/23674
  • Support for axis parameter in norm functions: A pull request updates the keras.ops.linalg.norm function and the Norm class to properly support lists as input for the axis parameter, addressing compatibility issues with JAX and NumPy and ensuring consistent axis handling in Functional models.
    • pull/23721

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
JyotinderSingh 23 6 18 34
laxmareddyp 18 4 5 25
SamanehSaadat 38 5 0 7
buildwithsuhana 16 7 7 0
samudraneel05 23 3 2 2
pctablet505 25 2 1 0
james77777778 22 2 0 3
hertschuh 13 3 0 9
MarcosAsh 16 1 0 0
maitry63 9 3 0 5

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