class_docstr: Implementation of :class:`MultiOptimizer` that performs a Newton update
  on batched low-dimensional variables, optionally regularizing via a
  per-parameter ``trust_radius``. See :func:`~pyro.ops.newton.newton_step`
  for details.
  
  The result of :meth:`get_step` will be differentiable, however the
  updated values from :meth:`step` will be detached.
  
  :param dict trust_radii: a dict mapping parameter name to radius of trust
      region. Missing names will use unregularized Newton update, equivalent
      to infinite trust radius.
code: def get_step(self, loss: torch.Tensor, params: Dict):
      updated_values = {}
      for name, value in params.items():
          trust_radius = self.trust_radii.get(name)  # type: ignore
          updated_value, cov = newton_step(loss, value, trust_radius)
          updated_values[name] = updated_value
      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 2 for calling the Newton obj's underlying member method code with example usage: obj.get_step(loss, params) and returns: updated_values