class_docstr: A wrapper for torch.optim.Optimizer objects that helps with managing dynamically generated parameters.
  
  :param optim_constructor: a torch.optim.Optimizer
  :param optim_args: a dictionary of learning arguments for the optimizer or a callable that returns
      such dictionaries
  :param clip_args: a dictionary of clip_norm and/or clip_value args or a callable that returns
      such dictionaries
code: def _get_grad_clip_args(self, param: str) -> Dict:
      # if we were passed a fct, we call fct with param info
      # arguments are (module name, param name) e.g. ('mymodule', 'bias')
      if callable(self.pt_clip_args):
          # get param name
          param_name = pyro.get_param_store().param_name(param)
          module_name = module_from_param_with_module_name(param_name)
          stripped_param_name = user_param_name(param_name)
  
          # invoke the user-provided callable
          clip_dict = self.pt_clip_args(
              module_name, stripped_param_name
          )
  
          # must be dictionary
          assert isinstance(
              clip_dict, dict
          ), "per-param clip arg must return defaults dictionary"
          return clip_dict
      else:
          return self.pt_clip_args
  
imports: import inspect
  from typing import Any, Callable, Dict, Iterable, List, Optional, Type, Union, ValuesView
  import torch
  from torch import Tensor
  from torch.nn.utils import clip_grad_norm_, clip_grad_value_
  from torch.optim import Optimizer
  import pyro
  from pyro.optim.adagrad_rmsprop import AdagradRMSProp
  from pyro.optim.clipped_adam import ClippedAdam
  from pyro.optim.dct_adam import DCTAdam
  from pyro.params.param_store import module_from_param_with_module_name, normalize_param_name, user_param_name
label_desc: Use image node_id 10 for calling the PyroOptim obj's underlying member method code with example usage: obj._get_grad_clip_args(param) and returns: clip_dict, self