class_docstr: The heterogeneous node classification trainer.
  
  Parameters
  ----------
  model: ``autogl.module.model.BaseAutoModel``
      Currently Heterogeneous trainer doesn't support decoupled model setting.
  
  num_features: ``int`` (Optional)
      The number of features in dataset. default None
  
  num_classes: ``int`` (Optional)
      The number of classes. default None
  
  optimizer: ``Optimizer`` of ``str``
      The (name of) optimizer used to train and predict. default torch.optim.Adam
  
  lr: ``float``
      The learning rate of node classification task. default 1e-4
  
  max_epoch: ``int``
      The max number of epochs in training. default 100
  
  early_stopping_round: ``int``
      The round of early stop. default 100
  
  weight_decay: ``float``
      weight decay ratio, default 1e-4
  
  device: ``torch.device`` or ``str``
      The device where model will be running on.
  
  init: ``bool``
      If True(False), the model will (not) be initialized.
  
  feval: (Sequence of) ``Evaluation`` or ``str``
      The evaluation functions, default ``[LogLoss]``
  
  loss: ``str``
      The loss used. Default ``nll_loss``.
  
  lr_scheduler_type: ``str`` (Optional)
      The lr scheduler type used. Default None.
docstr: The function of training on the given dataset and keeping valid result.
  Parameters
  ----------
  dataset: The node classification dataset used to be evaluated.
  mask: ``train``, ``val``, or ``test``.
      The dataset mask.
  feval: ``str``.
      The evaluation method used in this function.
  Returns
  -------
  res: The evaluation result on the given dataset.
docstr_tok: ["The","function","of","training","on","the","given","dataset","and","keeping","valid","result",".","Parameters","--","--","--","--","--","dataset",":","The","node","classification","dataset","used","to","be","evaluated",".","mask",":","``","train","``",",","``","val","``",",","or","``","test","``",".","The","dataset","mask",".","feval",":","``","str","``",".","The","evaluation","method","used","in","this","function",".","Returns","--","--","--","-","res",":","The","evaluation","result","on","the","given","dataset","."]
code: def evaluate(self, dataset, mask="val", feval=None):
      """
      The function of training on the given dataset and keeping valid result.
      Parameters
      ----------
      dataset: The node classification dataset used to be evaluated.
      mask: ``train``, ``val``, or ``test``.
          The dataset mask.
      feval: ``str``.
          The evaluation method used in this function.
      Returns
      -------
      res: The evaluation result on the given dataset.
      """
      G = dataset[0].to(self.device)
  
      mask = self._get_mask(dataset, mask)
      label = (
          G.nodes[dataset.schema["target_node_type"]]
          .data["label"]
          .to(self.device)
      )
  
      if feval is None:
          feval = self.feval
      else:
          feval = get_feval(feval)
  
      y_pred_prob = self.predict_proba(dataset, mask)
  
      y_true = label[mask] if mask is not None else label
  
      if not isinstance(feval, list):
          feval = [feval]
          return_signle = True
      else:
          return_signle = False
  
      res = []
      for f in feval:
          try:
              res.append(f.evaluate(y_pred_prob, y_true))
          except:
              res.append(
                  f.evaluate(
                      y_pred_prob.cpu().numpy(), y_true.cpu().numpy()
                  )
              )
      if return_signle:
          return res[0]
      return res
  
imports: from .None import register_trainer
  from .base import BaseNodeClassificationHetTrainer, EarlyStopping
  import torch
  from torch.optim.lr_scheduler import StepLR, MultiStepLR, ExponentialLR, ReduceLROnPlateau
  import torch.nn.functional
  from ..model import BaseAutoModel
  from .evaluation import get_feval, Logloss
  from typing import Union
  from copy import deepcopy
  from sklearn.metrics import f1_score
  from ...utils import get_logger
  from ...backend import DependentBackend
label_desc: Use image node_id 14 for calling the NodeClassificationHetTrainer obj's underlying member method code with example usage: obj.evaluate(dataset, mask, feval) and returns: res, res