class_docstr: A wrapper for :class:`~torch.optim.lr_scheduler` objects that adjusts learning rates
  for dynamically generated parameters.
  
  :param scheduler_constructor: a :class:`~torch.optim.lr_scheduler`
  :param optim_args: a dictionary of learning arguments for the optimizer or a callable that returns
      such dictionaries. must contain the key 'optimizer' with pytorch optimizer value
  :param clip_args: a dictionary of clip_norm and/or clip_value args or a callable that returns
      such dictionaries.
  
  Example::
  
      optimizer = torch.optim.SGD
      scheduler = pyro.optim.ExponentialLR({'optimizer': optimizer, 'optim_args': {'lr': 0.01}, 'gamma': 0.1})
      svi = SVI(model, guide, scheduler, loss=TraceGraph_ELBO())
      for i in range(epochs):
          for minibatch in DataLoader(dataset, batch_size):
              svi.step(minibatch)
          scheduler.step()
code: def __init__(
      self,
      scheduler_constructor,
      optim_args: Union[Dict],
      clip_args: Optional[Union[Dict]] = None,
  ):
      # pytorch scheduler
      self.pt_scheduler_constructor = scheduler_constructor
      # torch optimizer
      pt_optim_constructor = optim_args.pop("optimizer")
      # kwargs for the torch optimizer
      optim_kwargs = optim_args.pop("optim_args")
      self.kwargs = optim_args
      super().__init__(pt_optim_constructor, optim_kwargs, clip_args)
  
file_path: pyro/pyro/optim/lr_scheduler.py
imports: from typing import Any, Dict, Iterable, List, Optional, Union, ValuesView
  from torch import Tensor
  from pyro.optim.optim import PyroOptim
label_desc: Use image node_id 1 to create a new PyroLRScheduler object from inherited base classes: PyroOptim with example: obj = PyroLRScheduler(scheduler_constructor, optim_args, clip_args)