def test_prob_with_group_events_ndims(self): with self.get_session(): distrib = Normal(np.asarray(0., dtype=np.float32), np.asarray([1.0, 2.0, 3.0], dtype=np.float32), group_event_ndims=1) observed = np.asarray([[-1., 1., 2.], [0., 0., 0.]]) t = StochasticTensor(distrib, observed=observed) np.testing.assert_allclose( t.prob(group_event_ndims=0).eval(), distrib.prob(t, group_event_ndims=0).eval()) np.testing.assert_allclose( t.prob(group_event_ndims=1).eval(), distrib.prob(t, group_event_ndims=1).eval())
def test_prob_and_log_prob(self): with self.get_session(): distrib = Normal(np.asarray(0., dtype=np.float32), np.asarray([1.0, 2.0, 3.0], dtype=np.float32)) observed = np.arange(24, dtype=np.float32).reshape([4, 2, 3]) t = StochasticTensor(distrib, observed=observed) np.testing.assert_almost_equal(t.log_prob().eval(), distrib.log_prob(observed).eval()) np.testing.assert_almost_equal(t.prob().eval(), distrib.prob(observed).eval())
def test_specialized_prob_method(self): class MyNormal(Normal): @property def has_specialized_prob_method(self): return True with self.get_session(): distrib = MyNormal(np.asarray(0., dtype=np.float32), np.asarray([1.0, 2.0, 3.0], dtype=np.float32)) observed = np.arange(24, dtype=np.float32).reshape([4, 2, 3]) t = StochasticTensor(distrib, observed=observed) t.distribution._has_specialized_prob_method = True np.testing.assert_almost_equal(t.prob().eval(), distrib.prob(observed).eval())