class_docstr: Container class to combine different :class:`MultiOptimizer` instances for
  different parameters.
  
  :param list parts: A list of ``(names, optim)`` pairs, where each
      ``names`` is a list of parameter names, and each ``optim`` is a
      :class:`MultiOptimizer` or :class:`~pyro.optim.optim.PyroOptim` object
      to be used for the named parameters. Together the ``names`` should
      partition up all desired parameters to optimize.
  :raises ValueError: if any name is optimized by multiple optimizers.
code: def get_step(self, loss: torch.Tensor, params: Dict) -> Dict:
      updated_values = {}
      for names_part, optim in self.parts:
          updated_values.update(
              optim.get_step(
                  loss, {name: params[name] for name in names_part}
              )
          )
      return updated_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 3 for calling the MixedMultiOptimizer obj's underlying member method code with example usage: obj.get_step(loss, params) and returns: updated_values