ISubGVQA.sampling.methods.noise

Attributes

logger

Classes

BaseNoiseDistribution

Helper class that provides a standard way to create an ABC using

SumOfGammaNoiseDistribution

Creates a generator of samples for the Sum-of-Gamma distribution [1], parameterized

GumbelDistribution

Helper class that provides a standard way to create an ABC using

Module Contents

ISubGVQA.sampling.methods.noise.logger
class ISubGVQA.sampling.methods.noise.BaseNoiseDistribution

Bases: abc.ABC

Helper class that provides a standard way to create an ABC using inheritance.

abstract sample(shape: torch.Size) torch.Tensor
class ISubGVQA.sampling.methods.noise.SumOfGammaNoiseDistribution(k: float, nb_iterations: int = 10, device: torch.device | None = None)

Bases: BaseNoiseDistribution

Creates a generator of samples for the Sum-of-Gamma distribution [1], parameterized by k, nb_iterations, and device.

[1] Mathias Niepert, Pasquale Minervini, Luca Franceschi - Implicit MLE: Backpropagating Through Discrete Exponential Family Distributions. NeurIPS 2021 (https://arxiv.org/abs/2106.01798)

Example:

>>> import torch
>>> noise_distribution = SumOfGammaNoiseDistribution(k=5, nb_iterations=100)
>>> noise_distribution.sample(torch.Size([5]))
tensor([ 0.2504,  0.0112,  0.5466,  0.0051, -0.1497])
Args:

k (float): k parameter – see [1] for more details. nb_iterations (int): number of iterations for estimating the sample. device (torch.devicde): device where to store samples.

k
nb_iterations = 10
device = None
sample(shape: torch.Size) torch.Tensor
class ISubGVQA.sampling.methods.noise.GumbelDistribution(loc: float = 0.0, scale: float = 1.0, device: torch.device = 'cpu')

Bases: BaseNoiseDistribution

Helper class that provides a standard way to create an ABC using inheritance.

loc = 0.0
_scale = 1.0
device = 'cpu'
property scale
sample(shape: torch.Size) torch.Tensor