code: def log_local_area(self, local_grads):
      n = int((-1 + np.sqrt(1 + 8 * self.dims)) / 2) + 1
      local_grads_shape = tf.shape(local_grads)
      local_grads = tf.reshape(
          local_grads,
          tf.concat([tf.shape(local_grads)[:-1], [n, n]], axis=0),
      )
      # sqrt weight off diagonal terms so they appear with half the weight in the
      # jacobian matrix squared.
      local_grads = local_grads / np.sqrt(2.0)
      local_grads = tf.linalg.set_diag(
          local_grads, tf.zeros_like(tf.linalg.diag_part(local_grads))
      )
      local_grads = tf.reshape(local_grads, local_grads_shape)
      log_volume = 0.5 * tf.linalg.logdet(
          tf.linalg.matmul(local_grads, local_grads, transpose_b=True)
      )
      return self.dims * np.log(self.delta) + log_volume
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import exp
  from tensorflow_probability.python.bijectors import reshape
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.experimental.tangent_spaces import spaces_test_util
  from tensorflow_probability.python.experimental.tangent_spaces import symmetric_matrix
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import linalg
label_desc: Use image node_id 4 for calling the _ConstantDiagonalSymmetricMatrixTest obj's underlying member method code with example usage: obj.log_local_area(local_grads) and returns: unknown