code: def _npBatchMatmul(self, x, y, adjoint_a, adjoint_b):
      # output's shape depends on adj[0] and adj[1]
      if adjoint_a:
          x = np.conjugate(np.swapaxes(x, -1, -2))
      if adjoint_b:
          y = np.conjugate(np.swapaxes(y, -1, -2))
      return np.matmul(x, y)
  
imports: import numpy
  from tensorflow.python import tf2
  from tensorflow.python.client import session
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradient_checker_v2
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.platform import benchmark
  from tensorflow.python.platform import test
label_desc: Use image node_id 1 for calling the BatchMatmulOpTest obj's underlying member method code with example usage: obj._npBatchMatmul(x, y, adjoint_a, adjoint_b) and returns: np