keras-team/keras - Open Source PR Review Scorecard

Deep Learning for humans

C-Rank Grade: A (Welcoming) - 65/100

External PR Merge Rate: 57%

Response Time: -

First Timer Success: 58%

Frequently Asked Questions

Is keras-team/keras welcoming to first-time open-source contributors?

keras-team/keras has a recorded first-timer success rate of 58.3%. Repositories ranked A typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in keras-team/keras respond to incoming external pull requests in approximately 0.0 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 65.4 C-Rank™ score (A Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 65.4 places keras-team/keras in the A tier.

What is the external contributor pull request merge rate for keras-team/keras?

The external contributor pull request merge rate for keras-team/keras is 56.6%, based on public PR activity from non-core contributors.

Are there Good First Issues available in keras-team/keras?

keras-team/keras currently has 6 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

keras-team
keras-team/kerasA•Welcoming64.4k
GitHub
Back to Explorer
keras-team

keras-team/keras

64,351
Active (30d)A•Welcoming(65/100)Python

Deep Learning for humans

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

High-Friction Gatekeeper

Warmth Score
6.2/10
Patience Score
6.9/10
Nitpick Rate
49%

Rigorous architecture standards (75% critical review signals). Ensure PRs strictly follow guidelines before requesting review in keras-team/keras.

Top PR Submission Do's

  • •Add unit tests with >80% coverage for modified code paths
  • •Run repository linter and code formatters locally before pushing
  • •Link relevant GitHub issue ID in PR description pre-flight checklist

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit unlinked PRs without referencing an existing issue
  • •Do not mix refactoring and feature logic into a single commit
  • •Do not ping maintainers repeatedly within 24 hours of opening
Response Velocity
-
No reviewer activity recorded

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
56.6%
Moderate PR acceptance rate

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
58.3%
Strong first-timer PR acceptance rate

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
61 core
Highly collaborative maintainer core
Diagnostic Health HUD
56.6%
Merge Gauge
58.3%
1st-Timer
Community Vibe40/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for keras-team/keras
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/keras-team/keras)](https://getmerged.abhishekco.de/keras-team/keras?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

Description Three public objects are missing from the ALL_OBJECTS registry of their module: keras.losses.CategoricalGeneralizedCrossEntropy and keras.losses.categorical_generalized_cross_entropy. keras/src/losses/__init__.py does not import them. keras.optimizers.Lamb. keras/src/optimizers/__init__.py does not import it. keras.losses.get, keras.losses.deserialize, keras.optimizers.get and keras.optimizers.deserialize find objects only through ALL_OBJECTS_DICT. Thus, for these three objects: keras.losses.get and keras.optimizers.get raise ValueError: Could not interpret ... identifier for the class name, for the function name and for a serialized config. Model.compile uses get for string identifiers. compile(optimizer="lamb") raises this ValueError. compile(loss="CategoricalGeneralizedCrossEntropy") and compile(loss="categorical_generalized_cross_entropy") raise it at the first fit or evaluate. The other losses and optimizers accept their names, for example compile(loss="categorical_

📅 Opened Oct 6, 2026💬 5 comments
Quality: 90/100Contribute

Doc Issue Same as #21562, several docs of mobilenet should be fixed: In mobilenet.py: (the first one is described properly in comments) keras/keras/src/applications/mobilenet.py Lines 119 to 124 in 58db6d6 if weights == "imagenet" and include_top and classes != 1000: raise ValueError( "If using `weights='imagenet'` with `include_top=True`, " "`classes` should be 1000. " f"Received classes={classes}" ) keras/keras/src/applications/mobilenet.py Lines 158 to 164 in 58db6d6 if weights == "imagenet": if d

📅 Opened Sep 25, 2026💬 2 comments
Quality: 60/100Contribute

When calling keras.ops.multi_hot on a symbolic KerasTensor (e.g., dtype="int32" or dtype="int64"), MultiHot.compute_output_spec returns a KerasTensor with inputs.dtype ("int32"/"int64") instead of self.dtype (backend.floatx() by default, or the user-specified dtype). In eager mode, keras.ops.multi_hot returns "float32" by default (or the explicitly requested dtype), causing a dtype mismatch between symbolic graph construction and eager execution. Root Cause In keras/src/ops/nn.py: MultiHot.__init__ initializes self.dtype = dtype or backend.floatx(). However, MultiHot.compute_output_spec returns: return KerasTensor(x_shape, dtype=inputs.dtype, sparse=self.sparse) Using dtype=inputs.dtype instead of dtype=self.dtype causes symbolic execution to always inherit the integer index dtype of inputs and ignore both the default floatx() dtype and any explicit dtype argument. Additionally, MultiHot.call omits sparse=self.sparse when calling backend.nn.multi_hot. Reproduction colab: https://col

📅 Opened Sep 23, 2026💬 0 comments
Quality: 50/100Contribute

Calling keras.ops.batch_normalization on symbolic KerasTensor inputs when offset is provided and scale=None (the default) crashes with AttributeError: 'NoneType' object has no attribute 'shape'. Root Cause In BatchNorm.compute_output_spec in keras/src/ops/nn.py, line 2430 has a typo: if offset is not None: self._check_shape("offset", tuple(offset.shape), shape) if offset is not scale: # <-- Typo for `if scale is not None:` self._check_shape("scale", tuple(scale.shape), shape) When offset is a tensor (not None) and scale=None, offset is not scale evaluates to True, and tuple(scale.shape) fails with AttributeError: 'NoneType' object has no attribute 'shape'. Conversely, if the same tensor instance is passed for both offset and scale, offset is not scale evaluates to False and skips validating scale's shape. Reproduction Colab: https://colab.research.google.com/drive/1eilbjHoAgXb-sMUehi8XwqtVN7sxeAyF?usp=sharing

📅 Opened Sep 23, 2026💬 0 comments
Quality: 60/100Contribute

When calling keras.ops.categorical_crossentropy on symbolic KerasTensor inputs with a non-default axis (e.g., axis=1 or axis=-2), CategoricalCrossentropy.compute_output_spec ignores self.axis and always strips the last dimension (output.shape[:-1]). As a result, symbolic execution returns the wrong output shape whenever axis != -1 and fails to raise a ValueError when axis is out of bounds. Root Cause In CategoricalCrossentropy.compute_output_spec in keras/src/ops/nn.py (line 2085): def compute_output_spec(self, target, output): ... return KerasTensor(output.shape[:-1], dtype=output.dtype) Unlike SparseCategoricalCrossentropy.compute_output_spec immediately below it (which canonicalizes self.axis via canonicalize_axis(self.axis, len(output.shape)) and returns output.shape[:axis] + output.shape[axis + 1 :]), CategoricalCrossentropy.compute_output_spec hardcodes output.shape[:-1]. Reproduction colab: https://colab.research.google.com/drive/1ieqLsG4DEnXpgTyLxQTA_k-4hERBdXBC?usp=sha

📅 Opened Sep 23, 2026💬 0 comments
Quality: 50/100Contribute
Looking for more Python beginner tasks?Explore Python GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for keras-team/keras

When evaluating whether to contribute to keras-team/keras, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of keras-team/keras acknowledge new external contributions in approximately -. Out of all submitted pull requests from non-core authors in the last 180-day window, 56.6% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to keras-team/keras

01

Is keras-team/keras welcoming to first-time open-source contributors?

keras-team/keras has a recorded first-timer success rate of 58.3%. Repositories ranked Welcoming typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~-. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 65.4 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 65.4 places keras-team/keras in the Welcoming tier.

04

What is the external contributor pull request merge rate for keras-team/keras?

The external pull request merge rate is 56.6%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in keras-team/keras?

Yes, keras-team/keras currently has 6 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for keras-team/keras are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.