code: def check_type_forward(self, in_types):
      n_in = in_types.size()
      type_check.expect(2 <= n_in, n_in <= 3)
      x_type, w_type = in_types[:2]
      type_check._argname((x_type, w_type), ("x", "W"))
  
      type_check.expect(
          x_type.dtype.kind == "f",
          w_type.dtype.kind == "f",
          x_type.ndim == 2,
          w_type.ndim == 2,
          x_type.shape[1] == w_type.shape[1],
      )
      if type_check.eval(n_in) == 3:
          b_type = in_types[2]
          type_check._argname((b_type,), ("b",))
          type_check.expect(
              b_type.dtype == x_type.dtype,
              b_type.ndim == 1,
              b_type.shape[0] == w_type.shape[0],
          )
  
imports: import numpy
  from chainer import backend
  from chainer.backends import intel64
  from chainer import function_node
  import chainer.functions
  from chainer.graph_optimizations import static_code
  from chainer import utils
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 1 for calling the LinearFunction obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types