code: def test():
      model.eval()
  
      out = model.inference(x_dict, edge_index_dict, key2int)
      out = out[key2int["paper"]]
  
      y_pred = out.argmax(dim=-1, keepdim=True).cpu()
      y_true = data.y_dict["paper"]
  
      train_acc = evaluator.eval(
          {
              "y_true": y_true[split_idx["train"]["paper"]],
              "y_pred": y_pred[split_idx["train"]["paper"]],
          }
      )["acc"]
      valid_acc = evaluator.eval(
          {
              "y_true": y_true[split_idx["valid"]["paper"]],
              "y_pred": y_pred[split_idx["valid"]["paper"]],
          }
      )["acc"]
      test_acc = evaluator.eval(
          {
              "y_true": y_true[split_idx["test"]["paper"]],
              "y_pred": y_pred[split_idx["test"]["paper"]],
          }
      )["acc"]
  
      return train_acc, valid_acc, test_acc
  
imports: from copy import copy
  import argparse
  from tqdm.auto import tqdm
  import torch
  import torch.nn.functional
  from torch.nn import ModuleList, Linear, ParameterDict, Parameter
  from torch_sparse import SparseTensor
  from torch_geometric.utils import to_undirected
  from torch_geometric.data import Data, ClusterData, ClusterLoader
  from torch_geometric.utils.hetero import group_hetero_graph
  from torch_geometric.nn import MessagePassing
  from ogb.nodeproppred import PygNodePropPredDataset, Evaluator
  from logger import Logger
label_desc: Use image node_id 2 for calling a global function with example usage: test() and returns: train_acc,  valid_acc,  test_acc