class_docstr: Softmax activation followed by a cross entropy loss.
class_docstr_tok: ["Softmax","activation","followed","by","a","cross","entropy","loss","."]
code: def check_type_forward(self, in_types):
      type_check._argname(in_types, ("x", "t"))
      x_type, t_type = in_types
  
      if t_type.dtype.kind == "i":
          type_check.expect(
              x_type.dtype.kind == "f",
              t_type.dtype.kind == "i",
              t_type.ndim == x_type.ndim - 1,
              x_type.shape[0] == t_type.shape[0],
              x_type.shape[2:] == t_type.shape[1:],
          )
      else:
          # assume t is soft_target
          type_check.expect(
              x_type.dtype.kind == "f",
              t_type.dtype.kind == "f",
              x_type.shape == t_type.shape,
          )
  
imports: import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  from chainer.functions.activation import log_softmax
  from chainer.utils import type_check
  from chainer import variable
  import chainerx
label_desc: Use image node_id 2 for calling the SoftmaxCrossEntropy obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types