class_docstr: TreeLSTM unit with N forget gates.
  
  This have variable inputs ``(c1, c2, ..., cN, x)``
  where ``x`` is (3 + N) times larger than each cell.
  Forget gates ``(f1, f2, ..., fN)`` can depend in
  different partitions of ``x[:, 3 * cell_units:]``.
  There are two outputs ``(c, h)``.
class_docstr_tok: ["TreeLSTM","unit","with","N","forget","gates",".","This","have","variable","inputs","``","(","c1",",","c2",",","...",",","cN",",","x",")","``","where","``","x","``","is","(","3","+","N",")","times","larger","than","each","cell",".","Forget","gates","``","(","f1",",","f2",",","...",",","fN",")","``","can","depend","in","different","partitions","of","``","x","[",":",",","3","*","cell_units",":","]","``",".","There","are","two","outputs","``","(","c",",","h",")","``","."]
code: def check_type_forward(self, in_types):
      type_check.expect(in_types.size() >= 2)
      c_types = in_types[:-1]
      x_type = in_types[-1]
      n_ary = len(c_types)
  
      type_check.expect(x_type.ndim >= 2)
      for i in six.moves.range(len(c_types)):
          type_check.expect(
              c_types[i].dtype.kind == "f",
              x_type.dtype == c_types[i].dtype,
              c_types[i].ndim >= 2,
              c_types[i].ndim == x_type.ndim,
              x_type.shape[0] == c_types[i].shape[0],
              x_type.shape[1] == (3 + n_ary) * c_types[i].shape[1],
          )
          for j in six.moves.range(2, type_check.eval(c_types[i].ndim)):
              type_check.expect(x_type.shape[i] == c_types[i].shape[j])
  
file_path: chainer/chainer/functions/rnn/tree_lstm.py
imports: import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 1 for calling the TreeLSTM obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types