コード例 #1
0
  def testBijector(self):
    with self.test_session():
      exp = exp_lib.Exp(event_ndims=1)
      inline = inline_lib.Inline(
          forward_fn=math_ops.exp,
          inverse_fn=math_ops.log,
          inverse_log_det_jacobian_fn=(
              lambda y: -math_ops.reduce_sum(  # pylint: disable=g-long-lambda
                  math_ops.log(y), reduction_indices=-1)),
          forward_log_det_jacobian_fn=(
              lambda x: math_ops.reduce_sum(x, reduction_indices=-1)),
          name="exp")

      self.assertEqual(exp.name, inline.name)
      x = [[[1., 2.], [3., 4.], [5., 6.]]]
      y = np.exp(x)
      self.assertAllClose(y, inline.forward(x).eval())
      self.assertAllClose(x, inline.inverse(y).eval())
      self.assertAllClose(
          -np.sum(np.log(y), axis=-1),
          inline.inverse_log_det_jacobian(y).eval())
      self.assertAllClose(-inline.inverse_log_det_jacobian(y).eval(),
                          inline.forward_log_det_jacobian(x).eval())
      rev, jac = inline.inverse_and_inverse_log_det_jacobian(y)
      self.assertAllClose(x, rev.eval())
      self.assertAllClose(-np.sum(np.log(y), axis=-1), jac.eval())
コード例 #2
0
 def testScalarCongruency(self):
     with self.test_session():
         bijector = exp_lib.Exp()
         bijector_test_util.assert_scalar_congruency(bijector,
                                                     lower_x=-2.,
                                                     upper_x=1.5,
                                                     rtol=0.05)
コード例 #3
0
ファイル: chain_test.py プロジェクト: zmmqq00/tensorflow
 def testScalarCongruency(self):
     with self.test_session():
         bijector = chain_lib.Chain(
             (exp_lib.Exp(), softplus_lib.Softplus()))
         bijector_test_util.assert_scalar_congruency(bijector,
                                                     lower_x=1e-3,
                                                     upper_x=1.5,
                                                     rtol=0.05)
コード例 #4
0
ファイル: chain_test.py プロジェクト: zmmqq00/tensorflow
 def testBijector(self):
     with self.test_session():
         chain = chain_lib.Chain((exp_lib.Exp(event_ndims=1),
                                  softplus_lib.Softplus(event_ndims=1)))
         self.assertEqual("chain_of_exp_of_softplus", chain.name)
         x = np.asarray([[[1., 2.], [2., 3.]]])
         self.assertAllClose(1. + np.exp(x), chain.forward(x).eval())
         self.assertAllClose(np.log(x - 1.), chain.inverse(x).eval())
         self.assertAllClose(-np.sum(np.log(x - 1.), axis=2),
                             chain.inverse_log_det_jacobian(x).eval())
         self.assertAllClose(np.sum(x, axis=2),
                             chain.forward_log_det_jacobian(x).eval())
コード例 #5
0
 def testBijector(self):
   with self.test_session():
     bijector = exp_lib.Exp(event_ndims=1)
     self.assertEqual("exp", bijector.name)
     x = [[[1.], [2.]]]
     y = np.exp(x)
     self.assertAllClose(y, bijector.forward(x).eval())
     self.assertAllClose(x, bijector.inverse(y).eval())
     self.assertAllClose(
         -np.sum(np.log(y), axis=-1),
         bijector.inverse_log_det_jacobian(y).eval())
     self.assertAllClose(-bijector.inverse_log_det_jacobian(np.exp(x)).eval(),
                         bijector.forward_log_det_jacobian(x).eval())
コード例 #6
0
 def testBijectiveAndFinite(self):
   with self.test_session():
     bijector = exp_lib.Exp(event_ndims=0)
     x = np.linspace(-10, 10, num=10).astype(np.float32)
     y = np.logspace(-10, 10, num=10).astype(np.float32)
     bijector_test_util.assert_bijective_and_finite(bijector, x, y)