code: def forward(self, inputs):
      xp = backend.get_array_module(*inputs)
      y, t = inputs
      # numpy.bincount requires int32 on Windows
      t = t.astype(xp.int32, copy=False)
  
      if self.label_num is None:
          label_num = xp.amax(t) + 1
      else:
          label_num = self.label_num
          if chainer.is_debug():
              assert (t < label_num).all()
  
      mask = (t == self.ignore_label).ravel()
      pred = xp.where(mask, label_num, y.argmax(axis=1).ravel())
      true = xp.where(mask, label_num, t.ravel())
      support = xp.bincount(true, minlength=label_num + 1)[:label_num]
      relevant = xp.bincount(pred, minlength=label_num + 1)[:label_num]
      tp_mask = xp.where(pred == true, true, label_num)
      tp = xp.bincount(tp_mask, minlength=label_num + 1)[:label_num]
  
      precision = tp / relevant
      recall = tp / support
      fbeta = _fbeta_score(precision, recall, self.beta)
  
      return precision, recall, fbeta, support
  
file_path: chainer/chainer/functions/evaluation/classification_summary.py
imports: from __future__ import division
  import six
  import chainer
  from chainer import backend
  from chainer import function
  from chainer.utils import type_check
label_desc: Use image node_id 3 for calling the ClassificationSummary obj's underlying member method code with example usage: obj.forward(inputs) and returns: precision,  recall,  fbeta,  support