Beispiel #1
0
 def testScalarCongruency(self):
     bijector_test_util.assert_scalar_congruency(tfb.GompertzCDF(
         concentration=0.2, rate=0.2),
                                                 lower_x=1.,
                                                 upper_x=10.,
                                                 eval_func=self.evaluate,
                                                 rtol=0.05)
Beispiel #2
0
 def testVariableRate(self):
     x = tf.Variable(1.)
     b = tfb.GompertzCDF(concentration=1., rate=x, validate_args=True)
     self.evaluate(x.initializer)
     self.assertIs(x, b.rate)
     self.assertEqual((), self.evaluate(b.forward(1.)).shape)
     with self.assertRaisesOpError("Argument `rate` must be positive."):
         with tf.control_dependencies([x.assign(-1.)]):
             self.evaluate(b.forward(1.))
Beispiel #3
0
 def testBijectiveAndFinite(self):
     bijector = tfb.GompertzCDF(concentration=1.,
                                rate=0.01,
                                validate_args=True)
     x = np.logspace(-10, 2, num=10).astype(np.float32)
     y = np.linspace(0.01, 0.99, num=10).astype(np.float32)
     bijector_test_util.assert_bijective_and_finite(bijector,
                                                    x,
                                                    y,
                                                    eval_func=self.evaluate,
                                                    event_ndims=0,
                                                    rtol=1e-3)
Beispiel #4
0
 def testBijector(self):
     concentration = 0.3
     rate = 1.
     bijector = tfb.GompertzCDF(concentration=concentration,
                                rate=rate,
                                validate_args=True)
     self.assertStartsWith(bijector.name, "gompertz")
     x = np.array([[[0.1], [0.5], [1.4], [3.]]], dtype=np.float32)
     # Gompertz distribution
     gompertz_dist = stats.gompertz(c=concentration, scale=1. / rate)
     y = gompertz_dist.cdf(x).astype(np.float32)
     self.assertAllClose(y, self.evaluate(bijector.forward(x)))
     self.assertAllClose(x, self.evaluate(bijector.inverse(y)))
     self.assertAllClose(
         np.squeeze(gompertz_dist.logpdf(x), axis=-1),
         self.evaluate(bijector.forward_log_det_jacobian(x, event_ndims=1)))
     self.assertAllClose(
         self.evaluate(
             -bijector.inverse_log_det_jacobian(y, event_ndims=1)),
         self.evaluate(bijector.forward_log_det_jacobian(x, event_ndims=1)),
         rtol=1e-4,
         atol=0.)