Fix Edge Case when iter is at MAX_ITER #79
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.
Context:
I used ConstantParamScheduler as my baseline scheduler in a detectron2-based repository.
For example: cfg.SOLVER.MAX_ITER = 80,000
When self.iter is at 79,999 and triggers after_step(), it will display a runtime error as shown below:
RuntimeError: Invalid where parameter for scheduler: 1.0
I've learned that it's due to the fact that the self.last_epoch of the scheduler is always ahead by 1 relative to self.iter of the trainer.
To resolve this, by reducing
where
by self.EPSILON_WHERE, the result value becomes 0.999999.