code: def testEllipsis(self):
      # Batch matmul with ellipsis but without broadcasting.
      self._check("...mk,...kn->...mn", (5, 1, 2, 3), (5, 1, 3, 4))
      # Empty batch dimensions.
      self._check("...mk,...kn->...mn", (2, 3), (3, 4))
      # Tensor contraction with transpose.
      self._check(
          "...ija,aijb...->ba...ij", (1, 2, 2, 3, 1), (1, 2, 3, 4, 1, 2)
      )
      # Output subscripts may omit ellipsis when batch shape is empty.
      self._check("...mk,...kn->mn", (2, 3), (3, 4))
      self._check("...mk,kn->mn", (2, 3), (3, 4))
      self._check("mk,...kn->mn", (2, 3), (3, 4))
  
imports: import numpy
  from tensorflow.python.client import session
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors
  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 gen_linalg_ops
  from tensorflow.python.ops import gradient_checker_v2
  from tensorflow.python.ops import special_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 8 for calling the EinsumOpTest obj's underlying member method code with example usage: obj.testEllipsis() without return types