I was wondering why ReduceLROnPlateau does not have _LRScheduler as parent class. If I want to check if a variable is a learning rate scheduler object type, I could have used:
isinstance(scheduler, optim.lr_scheduler._LRScheduler)

Above covers all learning rate schedulers defined in lr_scheduler.py except ReduceLROnPlateau because it does not inherit from _LRScheduler. So instead I need to use:
isinstance(scheduler, optim.lr_scheduler._LRScheduler) or isinstance(scheduler, optim.lr_scheduler.ReduceLROnPlateau)

Shouldn’t ReduceLROnPlateau inherit from _LRScheduler as well? Is this just an oversight?
Context:
In general for saving a checkpoint, if I also want to save scheduler state dict, then I would like to verify the params first.