def testScalarCongruency(self): bijector = tfb.Expm1() bijector_test_util.assert_scalar_congruency(bijector, lower_x=-5., upper_x=2.5, eval_func=self.evaluate, rtol=0.15)
def testMatchesExpm1(self): bijector = tfb.Expm1() x = np.random.randn(30) y = np.expm1(x) self.assertAllClose(y, self.evaluate(bijector.forward(x))) # Disable caching. self.assertAllClose(x, self.evaluate(bijector.inverse(tf.identity(y))))
def disabled_testFailureCase(self): # TODO(b/140229057): This test should pass. dist = tfd.Chi(df=np.float32(27.744131)) dist = tfd.TransformedDistribution( bijector=tfb.NormalCDF(), distribution=dist, batch_shape=[4]) dist = tfb.Expm1()(dist) samps = 1.7182817 + tf.zeros_like(dist.sample(seed=test_util.test_seed())) self.assertAllClose(dist.log_prob(samps)[0], dist[0].log_prob(samps[0]))
def disabled_testFailureCase(self): # pylint: disable=invalid-name # TODO(b/140229057): This test should pass. dist = tfd.Chi(df=np.float32(27.744131) * np.ones((4,)).astype(np.float32)) dist = tfd.TransformedDistribution( bijector=tfb.NormalCDF(), distribution=dist) dist = tfb.Expm1()(dist) samps = 1.7182817 + tf.zeros_like(dist.sample(seed=test_util.test_seed())) self.assertAllClose(dist.log_prob(samps)[0], dist[0].log_prob(samps[0]))
def testBijectiveAndFinite(self): bijector = tfb.Expm1() x = np.linspace(-5, 5, num=20).astype(np.float32) y = np.logspace(-5, 5, num=20).astype(np.float32) bijector_test_util.assert_bijective_and_finite(bijector, x, y, eval_func=self.evaluate, event_ndims=0)
def testBijector(self): bijector = tfb.Expm1() self.assertStartsWith(bijector.name, 'expm1') x = [[[-1.], [1.4]]] y = np.expm1(x) self.assertAllClose(y, self.evaluate(bijector.forward(x))) self.assertAllClose(x, self.evaluate(bijector.inverse(y))) self.assertAllClose( -np.squeeze(np.log1p(y), axis=-1), self.evaluate(bijector.inverse_log_det_jacobian(y, event_ndims=1))) self.assertAllClose( self.evaluate(-bijector.inverse_log_det_jacobian(np.expm1(x), event_ndims=1)), self.evaluate(bijector.forward_log_det_jacobian(x, event_ndims=1)))
def testBijectorIsInvertExpm1(self): x = np.linspace(0., 10., num=200) log1p = tfb.Log1p() invert_expm1 = tfb.Invert(tfb.Expm1()) self.assertAllClose(self.evaluate(log1p.forward(x)), self.evaluate(invert_expm1.forward(x))) self.assertAllClose(self.evaluate(log1p.inverse(x)), self.evaluate(invert_expm1.inverse(x))) self.assertAllClose( self.evaluate(log1p.forward_log_det_jacobian(x, event_ndims=1)), self.evaluate( invert_expm1.forward_log_det_jacobian(x, event_ndims=1))) self.assertAllClose( self.evaluate(log1p.inverse_log_det_jacobian(x, event_ndims=1)), self.evaluate( invert_expm1.inverse_log_det_jacobian(x, event_ndims=1)))