code: def test(
      model,
      feats,
      labels,
      test_loader,
      evaluator,
      train_nid,
      val_nid,
      test_nid,
  ):
      model.eval()
      device = labels.device
      preds = []
      for batch in test_loader:
          batch_feats = [feat[batch].to(device) for feat in feats]
          preds.append(torch.argmax(model(batch_feats), dim=-1))
      # Concat mini-batch prediction results along node dimension
      preds = torch.cat(preds, dim=0)
      train_res = evaluator(preds[train_nid], labels[train_nid])
      val_res = evaluator(preds[val_nid], labels[val_nid])
      test_res = evaluator(preds[test_nid], labels[test_nid])
      return train_res, val_res, test_res
  
imports: import argparse
  import time
  import dgl
  import dgl.function
  import numpy
  import torch
  import torch.nn
  from dataset import load_dataset
label_desc: Use image node_id 5 for calling a global function with example usage: test(model, feats, labels, test_loader, evaluator, train_nid, val_nid, test_nid) and returns: train_res,  val_res,  test_res