class_docstr: Abstract PyroEstimator with shared args for all PyroEstimator child classes
  
  Parameters
  ----------
  num_steps : int
      Number of estimator steps in optimization
  learning_rate : float
      Estimator learning rate
  learning_rate_total_decay : float
      A config re-parameterized from ``lrd`` in :class:`~pyro.optim.ClippedAdam`. For example, 0.1 means a 90%
      reduction of the final step as of original learning rate where linear decay is implied along the steps. In the
      case of 1.0, no decay is applied.  All steps will have the constant learning rate specified by `learning_rate`.
  seed : int
      Seed int
  message : int
      Print to console every `message` number of steps
  kwargs
      Additional BaseEstimator args
  Notes
  -----
      See http://docs.pyro.ai/en/stable/_modules/pyro/optim/clipped_adam.html for optimizer details
class_docstr_tok: ["Abstract","PyroEstimator","with","shared","args","for","all","PyroEstimator","child","classes","Parameters","--","--","--","--","--","num_steps",":","int","Number","of","estimator","steps","in","optimization","learning_rate",":","float","Estimator","learning","rate","learning_rate_total_decay",":","float","A","config","re-parameterized","from","``","lrd","``","in",":","class",":","`","~pyro.optim.ClippedAdam","`",".","For","example",",","0.1","means","a","90","%","reduction","of","the","final","step","as","of","original","learning","rate","where","linear","decay","is","implied","along","the","steps",".","In","the","case","of","1.0",",","no","decay","is","applied",".","All","steps","will","have","the","constant","learning","rate","specified","by","`","learning_rate","`",".","seed",":","int","Seed","int","message",":","int","Print","to","console","every","`","message","`","number","of","steps","kwargs","Additional","BaseEstimator","args","Notes","--","--","-","See","http",":","\/\/docs.pyro.ai\/en\/stable\/_modules\/pyro\/optim\/clipped_adam.html","for","optimizer","details"]
code: def fit(
      self,
      model_name,
      model_param_names,
      data_input,
      fitter=None,
      init_values=None,
  ):
      raise NotImplementedError(
          "Concrete fit() method must be implemented"
      )
  
file_path: orbit/orbit/estimators/pyro_estimator.py
imports: from abc import abstractmethod
  import numpy
  import logging
  import pyro
  from pyro.infer import SVI, Trace_ELBO
  from pyro.infer.autoguide import AutoLowRankMultivariateNormal, AutoDelta
  from pyro.optim import ClippedAdam
  from .base_estimator import BaseEstimator
  from ..exceptions import EstimatorException
  from ..utils.pyro import get_pyro_model
label_desc: Use image node_id 2 for calling the PyroEstimator obj's underlying member method code with example usage: obj.fit(model_name, model_param_names, data_input, fitter, init_values) without return types