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: Select a :class:`Group` of model sites for joint guidance.
  
  :param str match: A regex string matching names of model sample sites.
  :return: A group of model sites.
  :rtype: Group
docstr_tok: ["Select","a",":","class",":","`","Group","`","of","model","sites","for","joint","guidance",".",":","param","str","match",":","A","regex","string","matching","names","of","model","sample","sites",".",":","return",":","A","group","of","model","sites",".",":","rtype",":","Group"]
code: def group(self, match=".*"):
      """
      Select a :class:`Group` of model sites for joint guidance.
  
      :param str match: A regex string matching names of model sample sites.
      :return: A group of model sites.
      :rtype: Group
      """
      if match not in self.groups:
          sites = [
              site
              for name, site in self.prototype_trace.iter_stochastic_nodes()
              if re.match(match, name)
          ]
          if not sites:
              raise ValueError(
                  "EasyGuide.group() pattern {} matched no model sites".format(
                      repr(match)
                  )
              )
          self.groups[match] = Group(self, sites)
      return self.groups[match]
  
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 8 for calling the EasyGuide obj's underlying member method code with example usage: obj.group(match) and returns: self