code: def testEmpty(self):
      def check(equation, input_shapes, output_shape):
          # All these cases result in an output filled with zeros, so we don't call
          # np.einsum. Also np.einsum doesn't support generalized diagonals which
          # are needed for EinsumOp gradients.
          r = np.random.RandomState(0)
          inputs = [np.array(r.randn(*shape)) for shape in input_shapes]
          output = self.evaluate(
              gen_linalg_ops.einsum(inputs, equation)
          )
          self.assertAllClose(
              output, np.zeros(output_shape), atol=1e-4, rtol=1e-4
          )
  
      # Contractions along zero-sized dimensions.
      check("ab,bc->ac", [(0, 10), (10, 10)], (0, 10))
      # From transformer xl.
      check("ibnd,ijbn->jnd", [(1, 0, 5, 10), (1, 1, 0, 5)], (1, 5, 10))
  
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 15 for calling the EinsumOpTest obj's underlying member method code with example usage: obj.testEmpty() without return types