class_docstr: :param trace_dist: a TracePosterior instance representing a Monte Carlo posterior
  
  Marginal histogram distribution.
  Turns a TracePosterior object into a Distribution
  over the return values of the TracePosterior's model.
code: def __init__(self, trace_dist, sites=None):
      assert isinstance(
          trace_dist, TracePosterior
      ), "trace_dist must be trace posterior distribution object"
  
      if sites is None:
          sites = "_RETURN"
  
      assert isinstance(
          sites, (str, list)
      ), "sites must be either '_RETURN' or list"
  
      self.sites = sites
      super().__init__()
      self.trace_dist = trace_dist
  
imports: import collections
  import functools
  import queue
  import torch
  import pyro.distributions
  import pyro.poutine
  from pyro.distributions.util import logsumexp
  from pyro.infer.abstract_infer import TracePosterior
  from pyro.poutine.runtime import NonlocalExit
label_desc: Use image node_id 1 to create a new HashingMarginal object from inherited base classes: dist with example: obj = HashingMarginal(trace_dist, sites)