class_docstr: Base class for "easy guides", which are more flexible than
  :class:`~pyro.infer.AutoGuide` s, but are easier to write than raw Pyro guides.
  
  Derived classes should define a :meth:`guide` method. This :meth:`guide`
  method can combine ordinary guide statements (e.g. ``pyro.sample`` and
  ``pyro.param``) with the following special statements:
  
  - ``group = self.group(...)`` selects multiple ``pyro.sample`` sites in the
    model. See :class:`Group` for subsequent methods.
  - ``with self.plate(...): ...`` should be used instead of ``pyro.plate``.
  - ``self.map_estimate(...)`` uses a ``Delta`` guide for a single site.
  
  Derived classes may also override the :meth:`init` method to provide custom
  initialization for models sites.
  
  :param callable model: A Pyro model.
docstr: Model initialization method, may be overridden by user.
  
  This should input a site and output a valid sample from that site.
  The default behavior is to draw a random sample::
  
      return site["fn"]()
  
  For other possible initialization functions see
  http://docs.pyro.ai/en/stable/infer.autoguide.html#module-pyro.infer.autoguide.initialization
docstr_tok: ["Model","initialization","method",",","may","be","overridden","by","user",".","This","should","input","a","site","and","output","a","valid","sample","from","that","site",".","The","default","behavior","is","to","draw","a","random","sample",":",":","return","site","[","``","fn","''","]","(",")","For","other","possible","initialization","functions","see","http",":","\/\/docs.pyro.ai\/en\/stable\/infer.autoguide.html","#","module-pyro.infer.autoguide.initialization"]
code: def init(self, site):
      """
      Model initialization method, may be overridden by user.
  
      This should input a site and output a valid sample from that site.
      The default behavior is to draw a random sample::
  
          return site["fn"]()
  
      For other possible initialization functions see
      http://docs.pyro.ai/en/stable/infer.autoguide.html#module-pyro.infer.autoguide.initialization
      """
      return site["fn"]()
  
imports: import re
  import weakref
  from abc import ABCMeta, abstractmethod
  from contextlib import ExitStack
  import torch
  from torch.distributions import biject_to
  import pyro
  import pyro.distributions
  import pyro.poutine
  import pyro.poutine.runtime
  from pyro.distributions.util import broadcast_shape, sum_rightmost
  from pyro.infer.autoguide.guides import prototype_hide_fn
  from pyro.infer.autoguide.initialization import InitMessenger
  from pyro.nn.module import PyroModule, PyroParam
label_desc: Use image node_id 5 for calling the EasyGuide obj's underlying member method code with example usage: obj.init(site) and returns: site