def test_Deterministic():
    """Tests Deterministic distribution"""

    # Create the distribution
    dist = pfd.Deterministic()

    # Check default params
    assert dist.loc == 0

    # Call should return backend obj
    assert isinstance(dist(), tfd.Deterministic)

    # Test methods
    assert dist.prob(0).numpy() == 1.0
    assert dist.prob(1).numpy() == 0.0
    assert dist.log_prob(0).numpy() == 0.0
    assert dist.log_prob(1).numpy() == -np.inf
    assert dist.mean().numpy() == 0.0
    assert dist.mode().numpy() == 0.0
    assert dist.cdf(-1).numpy() == 0.0
    assert dist.cdf(1).numpy() == 1.0

    # Test sampling
    samples = dist.sample()
    assert isinstance(samples, tf.Tensor)
    assert samples.ndim == 0
    samples = dist.sample(10)
    assert isinstance(samples, tf.Tensor)
    assert samples.ndim == 1
    assert samples.shape[0] == 10
    samples = dist.sample(tf.constant([10]))
    assert isinstance(samples, tf.Tensor)
    assert samples.ndim == 1
    assert samples.shape[0] == 10

    # Should be able to set params
    dist = pfd.Deterministic(loc=3)
    assert dist.loc == 3

    # But only with Tensor-like objs
    with pytest.raises(TypeError):
        dist = pfd.Deterministic(loc='lalala')

    # Test using a parameter as an argument
    p = pf.Parameter()
    dist = pfd.Deterministic(loc=p)
    dist.sample()
Example #2
0
 def __init__(self, d, k):
     self.m = pf.Parameter([d, k])
     self.s = pf.ScaleParameter([d, k])
     self.w = pf.DirichletParameter(k)
Example #3
0
 def __init__(self, dims):
     self.w = pf.Parameter([dims, 2])
     self.b = pf.Parameter(2)
Example #4
0
 def __init__(self):
     self.mu = pf.Parameter(name='mu')
     self.sig = pf.ScaleParameter(name='sig')
Example #5
0
 def __init__(self, d_in, d_out):
     self.w = pf.Parameter([d_in, d_out])
     self.b = pf.Parameter([1, d_out])
 def __init__(self):
     self.mu = pf.Parameter(name="mu")
     self.sig = pf.ScaleParameter(name="sig")
Example #7
0
 def __init__(self):
     self.weight = pf.Parameter(name="Weight")
     self.bias = pf.Parameter(name="Bias")
     self.std = pf.ScaleParameter(name="Noise Std Dev",
                                  prior=pf.Gamma(1.0, 1.0))
Example #8
0
 def __init__(self):
     self.weight = pf.Parameter(name="Weight")
     self.bias = pf.Parameter(name="Bias")
     self.std = pf.ScaleParameter(name="Noise Std Dev")
Example #9
0
 def __init__(self):
     self.weight = pf.Parameter(name='Weight')
     self.bias = pf.Parameter(name='Bias')
     self.std = pf.ScaleParameter(name='Noise Std Dev')
Example #10
0
 def __init__(self, d, q):
     self.W = pf.Parameter(shape=[d, q])
     self.sigma = pf.ScaleParameter()
 def __init__(self, dims):
     self.w = pf.Parameter([dims, 1])
     self.b = pf.Parameter()
     self.s = pf.ScaleParameter()
 def __init__(self):
     self.w = pf.Parameter()
     self.b = pf.Parameter()
     self.s = pf.ScaleParameter()
 def __init__(self):
     self.weight = pf.Parameter(name='Weight')
     self.bias = pf.Parameter(name='Bias')
     self.std = pf.ScaleParameter(name='Noise Std Dev',
         prior=pf.Gamma(1., 1.))