code: def testTriL(self):
      tril = np.array(
          [
              [[3, 0, 0], [2, -1, 0], [3, 2, 1]],
              [[2, 0, 0], [3, -2, 0], [4, 3, 2]],
          ],
          dtype=np.float32,
      )
      scale = tf.linalg.LinearOperatorLowerTriangular(
          tril, is_non_singular=True
      )
      bijector = scale_matvec_linear_operator.ScaleMatvecLinearOperator(
          scale=scale, validate_args=True
      )
  
      x = np.array(
          [[[1, 0, -1], [2, 3, 4]], [[4, 1, -7], [6, 9, 8]]],
          dtype=np.float32,
      )
      # If we made the bijector do x*A+b then this would be simplified to:
      # y = np.matmul(x, tril).
      y = np.squeeze(np.matmul(tril, np.expand_dims(x, -1)), -1)
      ildj = -np.sum(
          np.log(np.abs(np.diagonal(tril, axis1=-2, axis2=-1)))
      )
  
      self.assertStartsWith(
          bijector.name, "scale_matvec_linear_operator"
      )
      self.assertAllClose(y, self.evaluate(bijector.forward(x)))
      self.assertAllClose(x, self.evaluate(bijector.inverse(y)))
      self.assertAllClose(
          ildj,
          self.evaluate(
              bijector.inverse_log_det_jacobian(y, event_ndims=2)
          ),
      )
      self.assertAllClose(
          self.evaluate(
              -bijector.inverse_log_det_jacobian(y, event_ndims=2)
          ),
          self.evaluate(
              bijector.forward_log_det_jacobian(x, event_ndims=2)
          ),
      )
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import scale_matvec_linear_operator
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 2 for calling the ScaleMatvecLinearOperatorTest obj's underlying member method code with example usage: obj.testTriL() without return types