class_docstr: Improper distribution with zero :meth:`log_prob` and undefined
  :meth:`sample`.
  
  This is useful for transforming a model from generative dag form to factor
  graph form for use in HMC. For example the following are equal in
  distribution::
  
      # Version 1. a generative dag
      x = pyro.sample("x", Normal(0, 1))
      y = pyro.sample("y", Normal(x, 1))
      z = pyro.sample("z", Normal(y, 1))
  
      # Version 2. a factor graph
      xyz = pyro.sample("xyz", ImproperUniform(constraints.real, (), (3,)))
      x, y, z = xyz.unbind(-1)
      pyro.sample("x", Normal(0, 1), obs=x)
      pyro.sample("y", Normal(x, 1), obs=y)
      pyro.sample("z", Normal(y, 1), obs=z)
  
  Note this distribution errors when :meth:`sample` is called. To create a
  similar distribution that instead samples from a specified distribution
  consider using ``.mask(False)`` as in::
  
      xyz = dist.Normal(0, 1).expand([3]).to_event(1).mask(False)
  
  :param support: The support of the distribution.
  :type support: ~torch.distributions.constraints.Constraint
  :param torch.Size batch_shape: The batch shape.
  :param torch.Size event_shape: The event shape.
class_docstr_tok: ["Improper","distribution","with","zero",":","meth",":","`","log_prob","`","and","undefined",":","meth",":","`","sample","`",".","This","is","useful","for","transforming","a","model","from","generative","dag","form","to","factor","graph","form","for","use","in","HMC",".","For","example","the","following","are","equal","in","distribution",":",":","#","Version","1.","a","generative","dag","x","=","pyro.sample","(","``","x","''",",","Normal","(","0",",","1",")",")","y","=","pyro.sample","(","``","y","''",",","Normal","(","x",",","1",")",")","z","=","pyro.sample","(","``","z","''",",","Normal","(","y",",","1",")",")","#","Version","2.","a","factor","graph","xyz","=","pyro.sample","(","``","xyz","''",",","ImproperUniform","(","constraints.real",",","(",")",",","(","3",",",")",")",")","x",",","y",",","z","=","xyz.unbind","(","-1",")","pyro.sample","(","``","x","''",",","Normal","(","0",",","1",")",",","obs=x",")","pyro.sample","(","``","y","''",",","Normal","(","x",",","1",")",",","obs=y",")","pyro.sample","(","``","z","''",",","Normal","(","y",",","1",")",",","obs=z",")","Note","this","distribution","errors","when",":","meth",":","`","sample","`","is","called",".","To","create","a","similar","distribution","that","instead","samples","from","a","specified","distribution","consider","using","``",".mask","(","False",")","``","as","in",":",":","xyz","=","dist.Normal","(","0",",","1",")",".expand","(","[","3","]",")",".to_event","(","1",")",".mask","(","False",")",":","param","support",":","The","support","of","the","distribution",".",":","type","support",":","~torch.distributions.constraints.Constraint",":","param","torch.Size","batch_shape",":","The","batch","shape",".",":","param","torch.Size","event_shape",":","The","event","shape","."]
code: def __init__(self, support, batch_shape, event_shape):
      assert isinstance(support, constraints.Constraint)
      self._support = support
      super().__init__(batch_shape, event_shape)
  
file_path: pyro/pyro/distributions/improper_uniform.py
imports: import torch
  from torch.distributions import constraints
  from .torch_distribution import TorchDistribution
  from .util import broadcast_shape
label_desc: Use image node_id 1 to create a new ImproperUniform object from inherited base classes: TorchDistribution with example: obj = ImproperUniform(support, batch_shape, event_shape)