Repository navigation
[BugFix] Preserve action masks when expanding categorical specs - #4590
Open
mottopanikeiku wants to merge 1 commit into
Open
mottopanikeiku wants to merge 1 commit into
mottopanikeiku wants to merge 1 commit into
Conversation
Categorical.expand dropped the spec's mask, so samples from the expanded spec could include masked actions, and MultiCategorical.expand added an extra dimension to its mask and raised. I pass the existing mask to the constructors, which already broadcast it to the new shape. Assisted-by: Claude Assisted-by: GPT-6 Astra Signed-off-by: mottopanikeiku <176798723+mottopanikeiku@users.noreply.github.com>
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/rl/4590
Note: Links to docs will display an error until the docs builds have been completed.
|
This branch has not been deployed
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.
Description
Categorical.expanddiscarded its mask, allowing forbidden random actions.MultiCategorical.expandadded an extra dimension to its mask and raised on valid input. I now pass the existing mask to the constructors, which already broadcast it to the new shape. I also documented that expansion preserves outcome masks.A small reproducer:
main[2, 0, 2, 0, 1, 0, 1, 1][1, 1, 1, 1, 1, 1, 1, 1]RuntimeError: Cannot expand mask to the desired shape.[[1, 0], [1, 0]]Tests:
TestExpandfail on main. They cover singleton expansion, a new leading batch dimension, per-entry masks, and sampled action values.test/test_specs.py: 1824 passed, 9 skipped.Motivation and Context
Batching a masked action spec should not enable forbidden actions or fail while broadcasting its mask.
close #4588
Types of changes
Checklist
I used AI assistance (Claude and GPT-6 Astra) to find, fix and test this bug.