code: def test_trainable_linear_operator_block_diag(
      self, block_dims, batch_shape, operators, dtype, use_static_shape
  ):
      op = trainable_linear_operators.build_trainable_linear_operator_block(
          operators,
          block_dims=_build_shape(
              block_dims, is_static=use_static_shape
          ),
          batch_shape=_build_shape(
              batch_shape, is_static=use_static_shape
          ),
          dtype=dtype,
      )
      dim = sum(block_dims)
      self._test_linear_operator_shape_and_gradients(
          op, batch_shape, dim, dim, dtype
      )
      self.assertIsInstance(
          _strip_defer(op), tf.linalg.LinearOperatorBlockDiag
      )
  
      # Test that bijector builds.
      scale_matvec_linear_operator.ScaleMatvecLinearOperatorBlock(
          op, validate_args=True
      )
  
imports: import functools
  from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import scale_matvec_linear_operator
  from tensorflow_probability.python.experimental.util import deferred_module
  from tensorflow_probability.python.experimental.vi.util import trainable_linear_operators
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 6 for calling the TrainableLinearOperators obj's underlying member method code with example usage: obj.test_trainable_linear_operator_block_diag(block_dims, batch_shape, operators, dtype, use_static_shape) without return types