def another_simple_model(): _model = models.simple_model()[1] with _model: pm.Potential('pot', tt.ones((10, 10))) return _model
def test_dlogp(): start, model, (mu, sig) = simple_model() dlogp = model.fastdlogp() close_to(dlogp(start), -(start["x"] - mu) / sig ** 2, 1.0 / sig ** 2 / 100.0)
pm.Bernoulli('trials', p, observed=trials) trace = pm.sample(1000, step=pm.Metropolis()) approx = Empirical(trace) approx.randidx(None).eval() approx.randidx(1).eval() approx.random_fn(no_rand=True) approx.random_fn(no_rand=False) approx.histogram_logp.eval() def test_init_from_noize(self): with models.multidimensional_model()[1]: approx = Empirical.from_noise(100) assert approx.histogram.eval().shape == (100, 6) _model = models.simple_model()[1] with _model: pm.Potential('pot', tt.ones((10, 10))) _advi = ADVI() _fullrank_advi = FullRankADVI() _svgd = SVGD() @pytest.mark.parametrize( ['method', 'kwargs', 'error'], [('undefined', dict(), KeyError), (1, dict(), TypeError), (_advi, dict(start={}), None), (_fullrank_advi, dict(), None), (_svgd, dict(), None), ('advi', dict(), None), ('advi->fullrank_advi', dict(frac=.1), None), ('advi->fullrank_advi', dict(frac=1), ValueError), ('fullrank_advi', dict(), None), ('svgd', dict(), None),
def test_logp(): start, model, (mu, sig) = simple_model() lp = model.fastlogp lp(start) close_to(lp(start), sp.norm.logpdf(start["x"], mu, sig).sum(), tol)
def setup_method(self): _, self.model, _ = simple_model()
p = pm.Uniform('p') pm.Bernoulli('trials', p, observed=trials) trace = pm.sample(1000, step=pm.Metropolis()) histogram = Histogram(trace) histogram.randidx(None).eval() histogram.randidx(1).eval() histogram.random_fn(no_rand=True) histogram.random_fn(no_rand=False) histogram.histogram_logp.eval() def test_init_from_noize(self): with models.multidimensional_model()[1]: histogram = Histogram.from_noise(100) assert histogram.histogram.eval().shape == (100, 6) _model = models.simple_model()[1] with _model: pm.Potential('pot', tt.ones((10, 10))) _advi = ADVI() _fullrank_advi = FullRankADVI() _svgd = SVGD() @pytest.mark.parametrize( ['method', 'kwargs', 'error'], [ ('undefined', dict(), KeyError), (1, dict(), TypeError), (_advi, dict(), None), (_fullrank_advi, dict(), None), (_svgd, dict(), None),
def test_accuracy_normal(): _, model, (mu, _) = simple_model() with model: newstart = find_MAP(Point(x=[-10.5, 100.5])) close_to(newstart["x"], [mu, mu], select_by_precision(float64=1e-5, float32=1e-4))