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: A wrapper around :class:`pyro.plate` to allow `EasyGuide` to
  automatically construct plates. You should use this rather than
  :class:`pyro.plate` inside your :meth:`guide` implementation.
docstr_tok: ["A","wrapper","around",":","class",":","`","pyro.plate","`","to","allow","`","EasyGuide","`","to","automatically","construct","plates",".","You","should","use","this","rather","than",":","class",":","`","pyro.plate","`","inside","your",":","meth",":","`","guide","`","implementation","."]
code: def plate(
      self,
      name,
      size=None,
      subsample_size=None,
      subsample=None,
      *args,
      **kwargs,
  ):
      """
      A wrapper around :class:`pyro.plate` to allow `EasyGuide` to
      automatically construct plates. You should use this rather than
      :class:`pyro.plate` inside your :meth:`guide` implementation.
      """
      if name not in self.plates:
          self.plates[name] = pyro.plate(
              name, size, subsample_size, subsample, *args, **kwargs
          )
      return self.plates[name]
  
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 7 for calling the EasyGuide obj's underlying member method code with example usage: obj.plate(name, size, subsample_size, subsample) and returns: self