Fix NaN handling in AUPRC metric calculation#3523
Closed
zhangtemplar wants to merge 1 commit intometa-pytorch:mainfrom
Closed
Fix NaN handling in AUPRC metric calculation#3523zhangtemplar wants to merge 1 commit intometa-pytorch:mainfrom
zhangtemplar wants to merge 1 commit intometa-pytorch:mainfrom
Conversation
Contributor
|
@zhangtemplar has exported this pull request. If you are a Meta employee, you can view the originating Diff in D86464670. |
c996464 to
a292ff0
Compare
zhangtemplar
added a commit
to zhangtemplar/torchrec
that referenced
this pull request
Nov 9, 2025
Summary: Improved the NaN handling logic in the AUPRC (Area Under Precision-Recall Curve) metric calculation to correctly handle edge cases where division by zero occurs. The changes address NaN values that arise from 0.0/0.0 divisions in both recall and precision calculations: **Recall NaN handling:** - NaNs occur on the right side of the recall tensor due to cumsum starting from the left (num_fp) but being flipped - Changed NaN replacement value from 1.0 to 0.0 to match the 0.0 value appended on the right side - Removed the conditional check since we should always handle NaNs consistently **Precision NaN handling:** - Added explicit NaN handling for precision tensor (previously missing) - NaNs in precision occur on the right side similar to recall - Replace NaNs with 0.0 (not 1.0 as stated in comment) to prevent NaN propagation in _riemann_integral - This prevents the entire AUPRC result from becoming NaN when any precision element is NaN Added detailed comments explaining the root cause of NaN values and the rationale for the chosen replacement values. Reviewed By: iamzainhuda Differential Revision: D86464670
Summary: Improved the NaN handling logic in the AUPRC (Area Under Precision-Recall Curve) metric calculation to correctly handle edge cases where division by zero occurs. The changes address NaN values that arise from 0.0/0.0 divisions in both recall and precision calculations: **Recall NaN handling:** - NaNs occur on the right side of the recall tensor due to cumsum starting from the left (num_fp) but being flipped - Changed NaN replacement value from 1.0 to 0.0 to match the 0.0 value appended on the right side - Removed the conditional check since we should always handle NaNs consistently **Precision NaN handling:** - Added explicit NaN handling for precision tensor (previously missing) - NaNs in precision occur on the right side similar to recall - Replace NaNs with 0.0 (not 1.0 as stated in comment) to prevent NaN propagation in _riemann_integral - This prevents the entire AUPRC result from becoming NaN when any precision element is NaN Added detailed comments explaining the root cause of NaN values and the rationale for the chosen replacement values. Reviewed By: iamzainhuda Differential Revision: D86464670
a292ff0 to
c3a5823
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
Improved the NaN handling logic in the AUPRC (Area Under Precision-Recall Curve) metric calculation to correctly handle edge cases where division by zero occurs.
The changes address NaN values that arise from 0.0/0.0 divisions in both recall and precision calculations:
Recall NaN handling:
Precision NaN handling:
Added detailed comments explaining the root cause of NaN values and the rationale for the chosen replacement values.
Differential Revision: D86464670