docstr: Numerically approximate the forward log det Jacobian of a bijector.
  
  Args:
    bijector: the bijector whose Jacobian we wish to approximate
    x: the value for which we want to approximate the Jacobian
    event_ndims: number of dimensions in an event
    eps: epsilon to add when forming (f(x+eps)-f(x)) / eps
    input_to_vector: a bijector that maps the input value to a vector
    output_to_vector: a bijector that maps the output value to a vector
  
  Returns:
    A numerical approximation to the log det Jacobian of bijector.forward
    evaluated at x.
docstr_tok: ["Numerically","approximate","the","forward","log","det","Jacobian","of","a","bijector",".","Args",":","bijector",":","the","bijector","whose","Jacobian","we","wish","to","approximate","x",":","the","value","for","which","we","want","to","approximate","the","Jacobian","event_ndims",":","number","of","dimensions","in","an","event","eps",":","epsilon","to","add","when","forming","(","f","(","x+eps",")","-f","(","x",")",")","\/","eps","input_to_vector",":","a","bijector","that","maps","the","input","value","to","a","vector","output_to_vector",":","a","bijector","that","maps","the","output","value","to","a","vector","Returns",":","A","numerical","approximation","to","the","log","det","Jacobian","of","bijector.forward","evaluated","at","x","."]
code: def _get_fldj_numerical(
      self,
      bijector,
      x,
      event_ndims,
      eps=1.0e-6,
      input_to_vector=identity.Identity,
      output_to_vector=identity.Identity,
  ):
      """Numerically approximate the forward log det Jacobian of a bijector.
  
      Args:
        bijector: the bijector whose Jacobian we wish to approximate
        x: the value for which we want to approximate the Jacobian
        event_ndims: number of dimensions in an event
        eps: epsilon to add when forming (f(x+eps)-f(x)) / eps
        input_to_vector: a bijector that maps the input value to a vector
        output_to_vector: a bijector that maps the output value to a vector
  
      Returns:
        A numerical approximation to the log det Jacobian of bijector.forward
        evaluated at x.
      """
      x_vector = input_to_vector.forward(x)  # [B, n]
      n = tf.shape(x_vector)[-1]
      x_plus_eps_vector = x_vector[..., tf.newaxis, :] + eps * tf.eye(
          n, dtype=x_vector.dtype
      )  # [B, n, n]
      x_plus_eps = input_to_vector.inverse(
          x_plus_eps_vector
      )  # [B, n, d, d]
      f_x_plus_eps = bijector.forward(x_plus_eps)  # [B, n, d, d]
      f_x_plus_eps_vector = output_to_vector.forward(
          f_x_plus_eps
      )  # [B, n, n]
  
      f_x = bijector.forward(x)  # [B, d, d]
      f_x_vector = output_to_vector.forward(f_x)  # [B, n]
  
      jacobian_numerical = (
          f_x_plus_eps_vector - f_x_vector[..., tf.newaxis, :]
      ) / eps
  
      return (
          tf.math.log(tf.abs(tf.linalg.det(jacobian_numerical)))
          + input_to_vector.forward_log_det_jacobian(
              x, event_ndims=event_ndims
          )
          - output_to_vector.forward_log_det_jacobian(
              f_x, event_ndims=event_ndims
          )
      )
  
file_path: probability/tensorflow_probability/python/bijectors/cholesky_to_inv_cholesky_test.py
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import cholesky_to_inv_cholesky
  from tensorflow_probability.python.bijectors import exp
  from tensorflow_probability.python.bijectors import fill_scale_tril
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import invert
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 3 for calling the CholeskyToInvCholeskyTest obj's underlying member method code with example usage: obj._get_fldj_numerical(bijector, x, event_ndims, eps, input_to_vector, output_to_vector) and returns: unknown