Exemple #1
0
 def _fn(dtype, shape, name, trainable, add_variable_fn):
     """Creates a batch of `Deterministic` or `Normal` distributions."""
     loc, scale = loc_scale_fn_(dtype, shape, name, trainable,
                                add_variable_fn)
     if scale is None:
         return deterministic_lib.Deterministic(loc=loc)
     return normal_lib.Normal(loc=loc, scale=scale)
Exemple #2
0
 def testInvalidTolRaises(self):
     loc = rng.rand(2, 3, 4).astype(np.float32)
     with self.assertRaisesRegexp(errors.InvalidArgumentError,
                                  "Condition x >= 0"):
         _ = deterministic_lib.Deterministic(loc,
                                             atol=-1,
                                             validate_args=True)
Exemple #3
0
 def testSampleNoBatchDims(self):
     deterministic = deterministic_lib.Deterministic(0.)
     for sample_shape in [(), (4, )]:
         with self.cached_session():
             sample = deterministic.sample(sample_shape)
             self.assertAllEqual(sample_shape, sample.get_shape())
             self.assertAllClose(
                 np.zeros(sample_shape).astype(np.float32), sample.eval())
Exemple #4
0
 def testInvalidTolRaises(self):
     loc = rng.rand(2, 3, 4).astype(np.float32)
     deterministic = deterministic_lib.Deterministic(loc,
                                                     atol=-1,
                                                     validate_args=True)
     with self.cached_session():
         with self.assertRaisesOpError("Condition x >= 0"):
             deterministic.prob(0.).eval()
Exemple #5
0
 def testProbWithDefaultTol(self):
     loc = [[0., 1.], [2., 3.]]
     x = [[0., 1.1], [1.99, 3.]]
     deterministic = deterministic_lib.Deterministic(loc)
     expected_prob = [[1., 0.], [0., 1.]]
     with self.cached_session():
         prob = deterministic.prob(x)
         self.assertAllEqual((2, 2), prob.get_shape())
         self.assertAllEqual(expected_prob, prob.eval())
Exemple #6
0
 def testCdfWithNonzeroRTol(self):
     loc = [[1., 1.], [100., 100.]]
     x = [[0.9, 1.], [99.9, 97]]
     deterministic = deterministic_lib.Deterministic(loc, rtol=0.01)
     expected_cdf = [[0., 1.], [1., 0.]]
     with self.cached_session():
         cdf = deterministic.cdf(x)
         self.assertAllEqual((2, 2), cdf.get_shape())
         self.assertAllEqual(expected_cdf, cdf.eval())
Exemple #7
0
 def testCdfWithNonzeroATol(self):
     loc = [[0., 0.], [0., 0.]]
     x = [[-1., -0.1], [-0.01, 1.000001]]
     deterministic = deterministic_lib.Deterministic(loc, atol=0.05)
     expected_cdf = [[0., 0.], [1., 1.]]
     with self.cached_session():
         cdf = deterministic.cdf(x)
         self.assertAllEqual((2, 2), cdf.get_shape())
         self.assertAllEqual(expected_cdf, cdf.eval())
Exemple #8
0
 def testProbWithNonzeroATolIntegerType(self):
     loc = [[0, 1], [2, 3]]
     x = [[0, 2], [4, 2]]
     deterministic = deterministic_lib.Deterministic(loc, atol=1)
     expected_prob = [[1, 1], [0, 1]]
     with self.cached_session():
         prob = deterministic.prob(x)
         self.assertAllEqual((2, 2), prob.get_shape())
         self.assertAllEqual(expected_prob, prob.eval())
Exemple #9
0
 def testProbWithNonzeroATol(self):
     loc = [[0., 1.], [2., 3.]]
     x = [[0., 1.1], [1.99, 3.]]
     deterministic = deterministic_lib.Deterministic(loc, atol=0.05)
     expected_prob = [[1., 0.], [1., 1.]]
     with self.test_session():
         prob = deterministic.prob(x)
         self.assertAllEqual((2, 2), prob.get_shape())
         self.assertAllEqual(expected_prob, prob.eval())
Exemple #10
0
 def testSampleWithBatchDims(self):
     deterministic = deterministic_lib.Deterministic([0., 0.])
     for sample_shape in [(), (4, )]:
         with self.test_session():
             sample = deterministic.sample(sample_shape)
             self.assertAllEqual(sample_shape + (2, ), sample.get_shape())
             self.assertAllClose(
                 np.zeros(sample_shape + (2, )).astype(np.float32),
                 sample.eval())
Exemple #11
0
 def testProbWithNonzeroRTol(self):
     loc = [[0., 1.], [100., 100.]]
     x = [[0., 1.1], [100.1, 103.]]
     deterministic = deterministic_lib.Deterministic(loc, rtol=0.01)
     expected_prob = [[1., 0.], [1., 0.]]
     with self.cached_session():
         prob = deterministic.prob(x)
         self.assertAllEqual((2, 2), prob.get_shape())
         self.assertAllEqual(expected_prob, prob.eval())
Exemple #12
0
 def _fn(dtype, shape, name, trainable, add_variable_fn):
   """Creates multivariate `Deterministic` or `Normal` distribution."""
   loc, scale = loc_scale_fn_(dtype, shape, name, trainable, add_variable_fn)
   if scale is None:
     dist = deterministic_lib.Deterministic(loc=loc)
   else:
     dist = normal_lib.Normal(loc=loc, scale=scale)
   reinterpreted_batch_ndims = array_ops.shape(dist.batch_shape_tensor())[0]
   return independent_lib.Independent(
       dist, reinterpreted_batch_ndims=reinterpreted_batch_ndims)
Exemple #13
0
 def testProbWithNonzeroRTolIntegerType(self):
     loc = [[10, 10, 10], [10, 10, 10]]
     x = [[10, 20, 30], [10, 20, 30]]
     # Batch 0 will have rtol = 0
     # Batch 1 will have rtol = 1 (100% slack allowed)
     deterministic = deterministic_lib.Deterministic(loc, rtol=[[0], [1]])
     expected_prob = [[1, 0, 0], [1, 1, 0]]
     with self.cached_session():
         prob = deterministic.prob(x)
         self.assertAllEqual((2, 3), prob.get_shape())
         self.assertAllEqual(expected_prob, prob.eval())
Exemple #14
0
    def testShape(self):
        with self.cached_session():
            loc = rng.rand(2, 3, 4)
            deterministic = deterministic_lib.Deterministic(loc)

            self.assertAllEqual(deterministic.batch_shape_tensor().eval(),
                                (2, 3, 4))
            self.assertAllEqual(deterministic.batch_shape, (2, 3, 4))
            self.assertAllEqual(deterministic.event_shape_tensor().eval(), [])
            self.assertEqual(deterministic.event_shape,
                             tensor_shape.TensorShape([]))
Exemple #15
0
    def testSampleDynamicWithBatchDims(self):
        loc = array_ops.placeholder(np.float32)
        sample_shape = array_ops.placeholder(np.int32)

        deterministic = deterministic_lib.Deterministic(loc)
        for sample_shape_ in [(), (4, )]:
            with self.cached_session():
                sample_ = deterministic.sample(sample_shape).eval(
                    feed_dict={
                        loc: [0., 0.],
                        sample_shape: sample_shape_
                    })
                self.assertAllClose(
                    np.zeros(sample_shape_ + (2, )).astype(np.float32),
                    sample_)
Exemple #16
0
 def testEntropy(self):
     loc = np.array([-0.1, -3.2, 7.])
     deterministic = deterministic_lib.Deterministic(loc=loc)
     with self.cached_session() as sess:
         entropy_ = sess.run(deterministic.entropy())
         self.assertAllEqual(np.zeros(3), entropy_)
Exemple #17
0
 def testProbWithNoBatchDims(self):
     deterministic = deterministic_lib.Deterministic(0.)
     with self.cached_session():
         self.assertAllClose(1., deterministic.prob(0.).eval())
         self.assertAllClose(0., deterministic.prob(2.).eval())
         self.assertAllClose([1., 0.], deterministic.prob([0., 2.]).eval())
Exemple #18
0
 def testProbWithNoBatchDimsIntegerType(self):
     deterministic = deterministic_lib.Deterministic(0)
     with self.cached_session():
         self.assertAllClose(1, deterministic.prob(0).eval())
         self.assertAllClose(0, deterministic.prob(2).eval())
         self.assertAllClose([1, 0], deterministic.prob([0, 2]).eval())