code: def testNonInvertibleLUAssertVariable(self):
      lower_upper, permutation = self.evaluate(
          tf.linalg.lu([[1.0, 2, 3], [4, 5, 6], [0.5, 0.0, 0.25]])
      )
      lower_upper = tf.Variable(lower_upper)
      self.evaluate(lower_upper.initializer)
      bijector = scale_matvec_lu.ScaleMatvecLU(
          lower_upper=lower_upper,
          permutation=permutation,
          validate_args=True,
      )
  
      self.evaluate(bijector.forward([1.0, 2, 3]))
  
      with tf.control_dependencies(
          [lower_upper[1, 1].assign(-lower_upper[1, 1])]
      ):
          self.evaluate(bijector.forward([1.0, 2, 3]))
  
      with self.assertRaisesOpError(
          "`lower_upper` must have nonzero diagonal"
      ):
          with tf.control_dependencies([lower_upper[1, 1].assign(0)]):
              self.evaluate(bijector.forward([1.0, 2, 3]))
  
file_path: probability/tensorflow_probability/python/bijectors/scale_matvec_lu_test.py
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector_test_util
  from tensorflow_probability.python.bijectors import scale_matvec_lu
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 6 for calling the ScaleMatvecLUTest obj's underlying member method code with example usage: obj.testNonInvertibleLUAssertVariable() without return types