code: def _testSparseDenseInvalidInputs(
      self, a_indices, a_values, a_shape, b, expected_error=""
  ):
      # Public API call to sparse-dense add.
      with self.assertRaisesRegex(
          (ValueError, errors_impl.InvalidArgumentError), expected_error
      ):
          a = sparse_tensor.SparseTensor(a_indices, a_values, a_shape)
          self.evaluate(sparse_ops.sparse_add(a, b))
      # Directly call generated kernel, by-passing SparseTensor validation.
      with self.assertRaisesRegex(
          (ValueError, errors_impl.InvalidArgumentError), expected_error
      ):
          self.evaluate(
              sparse_ops.gen_sparse_ops.sparse_tensor_dense_add(
                  a_indices, a_values, a_shape, b
              )
          )
  
imports: import timeit
  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_impl
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import sparse_tensor
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import gradient_checker
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import sparse_ops
  import tensorflow.python.ops.sparse_grad
  from tensorflow.python.platform import test
label_desc: Use image node_id 12 for calling the SparseAddTest obj's underlying member method code with example usage: obj._testSparseDenseInvalidInputs(a_indices, a_values, a_shape, b, expected_error) without return types