class_docstr: Facade to wrap :class:`~pyro.optim.optim.PyroOptim` objects
  in a :class:`MultiOptimizer` interface.
code: def step(self, loss: torch.Tensor, params: Dict) -> None:
      values = params.values()
      grads = torch.autograd.grad(loss, values, create_graph=True)  # type: ignore
      for x, g in zip(values, grads):
          x.grad = g
      self.optim(values)
  
imports: from typing import Dict, List
  import torch
  from pyro.ops.newton import newton_step
  from pyro.optim.optim import PyroOptim
label_desc: Use image node_id 2 for calling the PyroMultiOptimizer obj's underlying member method code with example usage: obj.step(loss, params) without return types