Exemple #1
0
 def expand(self, batch_shape, _instance=None):
     new = self._get_checked_instance(HalfNormal, _instance)
     batch_shape = torch.Size(batch_shape)
     base_dist = self.base_dist.expand(batch_shape)
     super(HalfNormal, new).__init__(base_dist,
                                     AbsTransform(),
                                     validate_args=False)
     new._validate_args = self._validate_args
     return new
Exemple #2
0
def get_transforms(cache_size):
    transforms = [
        AbsTransform(cache_size=cache_size),
        ExpTransform(cache_size=cache_size),
        PowerTransform(exponent=2,
                       cache_size=cache_size),
        PowerTransform(exponent=torch.tensor(5.).normal_(),
                       cache_size=cache_size),
        PowerTransform(exponent=torch.tensor(5.).normal_(),
                       cache_size=cache_size),
        SigmoidTransform(cache_size=cache_size),
        TanhTransform(cache_size=cache_size),
        AffineTransform(0, 1, cache_size=cache_size),
        AffineTransform(1, -2, cache_size=cache_size),
        AffineTransform(torch.randn(5),
                        torch.randn(5),
                        cache_size=cache_size),
        AffineTransform(torch.randn(4, 5),
                        torch.randn(4, 5),
                        cache_size=cache_size),
        SoftmaxTransform(cache_size=cache_size),
        SoftplusTransform(cache_size=cache_size),
        StickBreakingTransform(cache_size=cache_size),
        LowerCholeskyTransform(cache_size=cache_size),
        CorrCholeskyTransform(cache_size=cache_size),
        ComposeTransform([
            AffineTransform(torch.randn(4, 5),
                            torch.randn(4, 5),
                            cache_size=cache_size),
        ]),
        ComposeTransform([
            AffineTransform(torch.randn(4, 5),
                            torch.randn(4, 5),
                            cache_size=cache_size),
            ExpTransform(cache_size=cache_size),
        ]),
        ComposeTransform([
            AffineTransform(0, 1, cache_size=cache_size),
            AffineTransform(torch.randn(4, 5),
                            torch.randn(4, 5),
                            cache_size=cache_size),
            AffineTransform(1, -2, cache_size=cache_size),
            AffineTransform(torch.randn(4, 5),
                            torch.randn(4, 5),
                            cache_size=cache_size),
        ]),
        ReshapeTransform((4, 5), (2, 5, 2)),
        IndependentTransform(
            AffineTransform(torch.randn(5),
                            torch.randn(5),
                            cache_size=cache_size),
            1),
        CumulativeDistributionTransform(Normal(0, 1)),
    ]
    transforms += [t.inv for t in transforms]
    return transforms
Exemple #3
0
def get_transforms(cache_size):
    transforms = [
        AbsTransform(cache_size=cache_size),
        ExpTransform(cache_size=cache_size),
        PowerTransform(exponent=2,
                       cache_size=cache_size),
        PowerTransform(exponent=torch.tensor(5.).normal_(),
                       cache_size=cache_size),
        SigmoidTransform(cache_size=cache_size),
        TanhTransform(cache_size=cache_size),
        AffineTransform(0, 1, cache_size=cache_size),
        AffineTransform(1, -2, cache_size=cache_size),
        AffineTransform(torch.randn(5),
                        torch.randn(5),
                        cache_size=cache_size),
        AffineTransform(torch.randn(4, 5),
                        torch.randn(4, 5),
                        cache_size=cache_size),
        SoftmaxTransform(cache_size=cache_size),
        StickBreakingTransform(cache_size=cache_size),
        LowerCholeskyTransform(cache_size=cache_size),
        CorrCholeskyTransform(cache_size=cache_size),
        ComposeTransform([
            AffineTransform(torch.randn(4, 5),
                            torch.randn(4, 5),
                            cache_size=cache_size),
        ]),
        ComposeTransform([
            AffineTransform(torch.randn(4, 5),
                            torch.randn(4, 5),
                            cache_size=cache_size),
            ExpTransform(cache_size=cache_size),
        ]),
        ComposeTransform([
            AffineTransform(0, 1, cache_size=cache_size),
            AffineTransform(torch.randn(4, 5),
                            torch.randn(4, 5),
                            cache_size=cache_size),
            AffineTransform(1, -2, cache_size=cache_size),
            AffineTransform(torch.randn(4, 5),
                            torch.randn(4, 5),
                            cache_size=cache_size),
        ]),
    ]
    transforms += [t.inv for t in transforms]
    return transforms
Exemple #4
0
 def __init__(self, scale, validate_args=None):
     super(HalfCauchy, self).__init__(Cauchy(0, scale),
                                      AbsTransform(),
                                      validate_args=validate_args)
Exemple #5
0
 def __init__(self, scale, validate_args=None):
     base_dist = Cauchy(0, scale)
     super(HalfCauchy, self).__init__(base_dist,
                                      AbsTransform(),
                                      validate_args=validate_args)
Exemple #6
0
 def __init__(self, scale, validate_args=None):
     base_dist = Normal(0, scale, validate_args=False)
     super(HalfNormal, self).__init__(base_dist,
                                      AbsTransform(),
                                      validate_args=validate_args)
Exemple #7
0
 def __init__(self, scale, validate_args=None):
     super(HalfNormal, self).__init__(Normal(0, scale), AbsTransform(),
                                      validate_args=validate_args)
Exemple #8
0
 def __init__(self, loc, scale):
     loc, scale = broadcast_all(loc, scale)
     base_dist = Cauchy(0, scale)
     transforms = [AbsTransform(), AffineTransform(loc, 1)]
     super(HalfCauchy, self).__init__(base_dist, transforms)
Exemple #9
0
 def __init__(self, base_dist, validate_args=None):
     if base_dist.event_shape:
         raise ValueError("Only univariate distributions can be folded.")
     super().__init__(base_dist, AbsTransform(), validate_args)