class_docstr: Backward-sample implementation of product.
  
  This is agnostic to sampler implementation, and hence can be used both by
  :class:`MapRing` (temperature 0 sampling) and :class:`SampleRing`
  (temperature 1 sampling).
class_docstr_tok: ["Backward-sample","implementation","of","product",".","This","is","agnostic","to","sampler","implementation",",","and","hence","can","be","used","both","by",":","class",":","`","MapRing","`","(","temperature","0","sampling",")","and",":","class",":","`","SampleRing","`","(","temperature","1","sampling",")","."]
code: def __init__(self, ring, term, ordinal):
      self.ring = ring
      self.term = term
      self.ordinal = ordinal
  
imports: import weakref
  from abc import ABCMeta, abstractmethod
  import torch
  from pyro.ops.einsum import contract
  from pyro.ops.einsum.adjoint import SAMPLE_SYMBOL, Backward
  from pyro.util import ignore_jit_warnings
label_desc: Use image node_id 1 to create a new _SampleProductBackward object from inherited base classes: Backward with example: obj = _SampleProductBackward(ring, term, ordinal)