class_docstr: Long short-term memory unit with forget gate.
  
  It has two inputs (c, x) and two outputs (c, h), where c indicates the cell
  state. x must have four times channels compared to the number of units.
class_docstr_tok: ["Long","short-term","memory","unit","with","forget","gate",".","It","has","two","inputs","(","c",",","x",")","and","two","outputs","(","c",",","h",")",",","where","c","indicates","the","cell","state",".","x","must","have","four","times","channels","compared","to","the","number","of","units","."]
code: def check_type_forward(self, in_types):
      type_check._argname(in_types, ("c", "x"))
      c_type, x_type = in_types
  
      type_check.expect(
          c_type.dtype.kind == "f",
          x_type.dtype == c_type.dtype,
          c_type.ndim >= 2,
          x_type.ndim >= 2,
          c_type.ndim == x_type.ndim,
          x_type.shape[0] <= c_type.shape[0],
          x_type.shape[1] == 4 * c_type.shape[1],
      )
      for i in six.moves.range(2, type_check.eval(c_type.ndim)):
          type_check.expect(x_type.shape[i] == c_type.shape[i])
  
imports: import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer.backends import intel64
  from chainer import function
  from chainer import function_node
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 1 for calling the LSTM obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types