class_docstr: Concatenate multiple tensors towards specified axis.
class_docstr_tok: ["Concatenate","multiple","tensors","towards","specified","axis","."]
code: def check_type_forward(self, in_types):
      type_check.expect(in_types.size() > 0)
      type_check.expect(
          in_types[0].ndim > type_check.make_variable(self.axis, "axis")
      )
  
      type_check.expect(
          -in_types[0].ndim <= self.axis, self.axis < in_types[0].ndim
      )
      ndim = type_check.eval(in_types[0].ndim)
      axis = self.axis % ndim
      for i in six.moves.range(1, type_check.eval(in_types.size())):
          type_check.expect(
              in_types[0].dtype == in_types[i].dtype,
              in_types[0].ndim == in_types[i].ndim,
          )
          for d in six.moves.range(0, ndim):
              if d == axis:
                  continue
              type_check.expect(
                  in_types[0].shape[d] == in_types[i].shape[d]
              )
  
file_path: chainer/chainer/functions/array/concat.py
imports: import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import intel64
  from chainer import function_node
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 2 for calling the Concat obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types