\ :py:mod:`clipppy.utils.distributions.wrapper` =============================================== .. py:module:: clipppy.utils.distributions.wrapper Module Contents --------------- .. py:data:: _Distribution .. py:data:: _size .. py:class:: DistributionWrapper(base_dist: _Distribution, batch_shape: _size = None, event_shape: _size = None, validate_args=None) Base class for a distribution that delegates to another one. .. py:attribute:: arg_constraints .. py:method:: batch_dim(self) :property: .. py:method:: cdf(self, value) Returns the cumulative density/mass function evaluated at `value`. Args: value (Tensor): .. py:method:: entropy(self) Returns entropy of distribution, batched over batch_shape. Returns: Tensor of shape batch_shape. .. py:method:: enumerate_support(self, expand=True) Returns tensor containing all values supported by a discrete distribution. The result will enumerate over dimension 0, so the shape of the result will be `(cardinality,) + batch_shape + event_shape` (where `event_shape = ()` for univariate distributions). Note that this enumerates over all batched tensors in lock-step `[[0, 0], [1, 1], ...]`. With `expand=False`, enumeration happens along dim 0, but with the remaining batch dimensions being singleton dimensions, `[[0], [1], ..`. To iterate over the full Cartesian product use `itertools.product(m.enumerate_support())`. Args: expand (bool): whether to expand the support over the batch dims to match the distribution's `batch_shape`. Returns: Tensor iterating over dimension 0. .. py:method:: expand(self, batch_shape, _instance=None) Returns a new distribution instance (or populates an existing instance provided by a derived class) with batch dimensions expanded to `batch_shape`. This method calls :class:`~torch.Tensor.expand` on the distribution's parameters. As such, this does not allocate new memory for the expanded distribution instance. Additionally, this does not repeat any args checking or parameter broadcasting in `__init__.py`, when an instance is first created. Args: batch_shape (torch.Size): the desired expanded size. _instance: new instance provided by subclasses that need to override `.expand`. Returns: New distribution instance with batch dimensions expanded to `batch_size`. .. py:method:: has_enumerate_support(self) :property: .. py:method:: has_rsample(self) :property: .. py:method:: icdf(self, value) Returns the inverse cumulative density/mass function evaluated at `value`. Args: value (Tensor): .. py:method:: log_prob(self, value) Returns the log of the probability density/mass function evaluated at `value`. Args: value (Tensor): .. py:method:: mean(self) :property: Returns the mean of the distribution. .. py:method:: rsample(self, sample_shape=Size()) Generates a sample_shape shaped reparameterized sample or sample_shape shaped batch of reparameterized samples if the distribution parameters are batched. .. py:method:: sample(self, sample_shape=Size()) Generates a sample_shape shaped sample or sample_shape shaped batch of samples if the distribution parameters are batched. .. py:method:: support(self) Returns a :class:`~torch.distributions.constraints.Constraint` object representing this distribution's support. .. py:method:: variance(self) :property: Returns the variance of the distribution.