code: def check_type_forward(self, in_types):
      type_check._argname(in_types, ("a", "b"))
      a_type, b_type = in_types
  
      type_check.expect(
          a_type.dtype == numpy.float32, b_type.dtype == numpy.float32
      )
  
      _check_ndim(a_type, lower=2, upper=3)
      _check_ndim(b_type, lower=2, upper=3)
  
      a_idx = _get_check_index(self.transa, False, row_idx=1, col_idx=2)
      b_idx = _get_check_index(self.transb, True, row_idx=1, col_idx=2)
      a_size = _get_size(a_type, a_idx)
      b_size = _get_size(b_type, b_idx)
      type_check.expect(a_size == b_size)
  
imports: import warnings
  import numpy
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  import chainer.functions
  from chainer import utils
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 2 for calling the BatchMatMul obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types