示例#1
0
 def testBijector(self):
     loc = 0.3
     scale = 5.
     concentration = np.array([[[-5.5], [-20], [0.], [1.]]],
                              dtype=np.float32)
     bijector = tfb.GeneralizedExtremeValueCDF(loc=loc,
                                               scale=scale,
                                               concentration=concentration,
                                               validate_args=True)
     self.assertStartsWith(bijector.name, "generalizedextremevalue")
     x = np.array([[[0.], [-3.], [0.], [4.2]]], dtype=np.float32)
     # GeneralizedExtremeValue distribution
     gev_dist = stats.genextreme(-concentration, loc=loc, scale=scale)
     y = gev_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(gev_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.)
示例#2
0
 def testScalarCongruency(self):
     bijector_test_util.assert_scalar_congruency(
         tfb.GeneralizedExtremeValueCDF(loc=0.3,
                                        scale=20.,
                                        concentration=0.2),
         lower_x=1.,
         upper_x=100.,
         eval_func=self.evaluate,
         rtol=0.05)
示例#3
0
 def testVariableScale(self):
     x = tf.Variable(1.)
     b = tfb.GeneralizedExtremeValueCDF(loc=0.,
                                        scale=x,
                                        concentration=0.6,
                                        validate_args=True)
     self.evaluate(x.initializer)
     self.assertIs(x, b.scale)
     self.assertEqual((), self.evaluate(b.forward(1.)).shape)
     with self.assertRaisesOpError("Argument `scale` must be positive."):
         with tf.control_dependencies([x.assign(-1.)]):
             self.evaluate(b.forward(2.))
示例#4
0
 def testBijectiveAndFinite(self):
     bijector = tfb.GeneralizedExtremeValueCDF(loc=0.,
                                               scale=3.0,
                                               concentration=2.0,
                                               validate_args=True)
     x = np.linspace(-1.4, 10., 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)