def test_aevb_empirical(self): _, model, _ = models.exponential_beta(n=2) x = model.x mu = theano.shared(x.init_value) rho = theano.shared(np.zeros_like(x.init_value)) with model: inference = ADVI(local_rv={x: (mu, rho)}) approx = inference.approx trace0 = approx.sample(10000) approx = Empirical(trace0, local_rv={x: (mu, rho)}) trace1 = approx.sample(10000) approx.random(no_rand=True) approx.random_fn(no_rand=True) np.testing.assert_allclose(trace0['y'].mean(0), trace1['y'].mean(0), atol=0.02) np.testing.assert_allclose(trace0['y'].var(0), trace1['y'].var(0), atol=0.02) np.testing.assert_allclose(trace0['x'].mean(0), trace1['x'].mean(0), atol=0.02) np.testing.assert_allclose(trace0['x'].var(0), trace1['x'].var(0), atol=0.02)
def test_aevb(self): _, model, _ = models.exponential_beta() x = model.x y = model.y mu = theano.shared(x.init_value) * 2 sd = theano.shared(x.init_value) * 3 with model: inference = self.inference(local_rv={y: (mu, sd)}) inference.fit(3)
def test_multiple_replacements(inference_spec): _, model, _ = models.exponential_beta(n=2) x = model.x y = model.y xy = x * y xpy = x + y with model: ap = inference_spec().approx xy_, xpy_ = ap.apply_replacements([xy, xpy]) xy_s, xpy_s = ap.sample_node([xy, xpy]) xy_.eval() xpy_.eval() xy_s.eval() xpy_s.eval()
def test_multiple_replacements(self): _, model, _ = models.exponential_beta(n=2) x = model.x y = model.y xy = x * y xpy = x + y with model: mf = self.inference().approx xy_, xpy_ = mf.apply_replacements([xy, xpy]) xy_s, xpy_s = mf.sample_node([xy, xpy]) xy_.eval() xpy_.eval() xy_s.eval() xpy_s.eval()
def test_multiple_replacements(inference_spec): _, model, _ = models.exponential_beta(n=2) x = model.x y = model.y xy = x*y xpy = x+y with model: ap = inference_spec().approx xy_, xpy_ = ap.apply_replacements([xy, xpy]) xy_s, xpy_s = ap.sample_node([xy, xpy]) xy_.eval() xpy_.eval() xy_s.eval() xpy_s.eval()
def test_multiple_replacements(self): _, model, _ = models.exponential_beta(n=2) x = model.x y = model.y xy = x*y xpy = x+y with model: mf = self.inference().approx xy_, xpy_ = mf.apply_replacements([xy, xpy]) xy_s, xpy_s = mf.sample_node([xy, xpy]) xy_.eval() xpy_.eval() xy_s.eval() xpy_s.eval()
def test_aevb_empirical(): _, model, _ = models.exponential_beta(n=2) x = model.x mu = theano.shared(x.init_value) rho = theano.shared(np.zeros_like(x.init_value)) with model: inference = ADVI(local_rv={x: (mu, rho)}) approx = inference.approx trace0 = approx.sample(10000) approx = Empirical(trace0, local_rv={x: (mu, rho)}) trace1 = approx.sample(10000) np.testing.assert_allclose(trace0['y'].mean(0), trace1['y'].mean(0), atol=0.02) np.testing.assert_allclose(trace0['y'].var(0), trace1['y'].var(0), atol=0.02) np.testing.assert_allclose(trace0['x'].mean(0), trace1['x'].mean(0), atol=0.02) np.testing.assert_allclose(trace0['x'].var(0), trace1['x'].var(0), atol=0.02)
def test_aevb(self): _, model, _ = models.exponential_beta(n=2) x = model.x y = model.y mu = theano.shared(x.init_value) * 2 rho = theano.shared(np.zeros_like(x.init_value)) with model: inference = self.inference(local_rv={y: (mu, rho)}) approx = inference.fit(3, obj_n_mc=2) approx.sample_vp(10) approx.apply_replacements(y, more_replacements={ x: np.asarray([1, 1], dtype=x.dtype) }).eval()
def test_aevb_histogram(self): _, model, _ = models.exponential_beta(n=2) x = model.x mu = theano.shared(x.init_value) rho = theano.shared(np.zeros_like(x.init_value)) with model: inference = ADVI(local_rv={x: (mu, rho)}) approx = inference.approx trace0 = approx.sample_vp(10000) histogram = Histogram(trace0, local_rv={x: (mu, rho)}) trace1 = histogram.sample_vp(10000) histogram.random(no_rand=True) histogram.random_fn(no_rand=True) np.testing.assert_allclose(trace0['y'].mean(0), trace1['y'].mean(0), atol=0.02) np.testing.assert_allclose(trace0['y'].var(0), trace1['y'].var(0), atol=0.02) np.testing.assert_allclose(trace0['x'].mean(0), trace1['x'].mean(0), atol=0.02) np.testing.assert_allclose(trace0['x'].var(0), trace1['x'].var(0), atol=0.02)