class_docstr: S-LSTM unit.
  
  It has four inputs (c1, c2, x1, x2) and two outputs (c, h), where c
  indicates the cell state. x1 and x2 must have four times channels compared
  to the number of units.
class_docstr_tok: ["S-LSTM","unit",".","It","has","four","inputs","(","c1",",","c2",",","x1",",","x2",")","and","two","outputs","(","c",",","h",")",",","where","c","indicates","the","cell","state",".","x1","and","x2","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_prev1", "c_prev2", "x1", "x2"))
      c1_type, c2_type, x1_type, x2_type = in_types
  
      type_check.expect(
          c1_type.dtype.kind == "f",
          c2_type.dtype == c1_type.dtype,
          x1_type.dtype == c1_type.dtype,
          x2_type.dtype == c1_type.dtype,
          c1_type.ndim >= 2,
          c2_type.ndim >= 2,
          x1_type.ndim >= 2,
          x2_type.ndim >= 2,
          c1_type.ndim == x1_type.ndim,
          c1_type.ndim == c2_type.ndim,
          c1_type.ndim == x2_type.ndim,
          c1_type.shape[0] == x1_type.shape[0],
          c1_type.shape[0] == c2_type.shape[0],
          c1_type.shape[0] == x2_type.shape[0],
          x1_type.shape[1] == 4 * c1_type.shape[1],
          x2_type.shape[1] == 4 * c2_type.shape[1],
      )
      for i in range(2, type_check.eval(c1_type.ndim)):
          type_check.expect(x1_type.shape[i] == c1_type.shape[i])
          type_check.expect(x2_type.shape[i] == c2_type.shape[i])
          type_check.expect(x1_type.shape[i] == x2_type.shape[i])
  
imports: import numpy
  import six
  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 SLSTM obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types