code: def run_an_eval_epoch(graph, splitted_idx, model, evaluator):
      model.eval()
      with torch.no_grad():
          logits = model(graph)
      labels = graph.ndata["labels"].cpu().numpy()
      preds = logits.cpu().detach().numpy()
  
      train_score = evaluator.eval(
          {
              "y_true": labels[splitted_idx["train"]],
              "y_pred": preds[splitted_idx["train"]],
          }
      )
      val_score = evaluator.eval(
          {
              "y_true": labels[splitted_idx["valid"]],
              "y_pred": preds[splitted_idx["valid"]],
          }
      )
      test_score = evaluator.eval(
          {
              "y_true": labels[splitted_idx["test"]],
              "y_pred": preds[splitted_idx["test"]],
          }
      )
  
      return (
          train_score["rocauc"],
          val_score["rocauc"],
          test_score["rocauc"],
      )
  
file_path: dgl/examples/pytorch/ogb/ogbn-proteins/main_proteins_full_dgl.py
imports: import os
  import time
  import dgl.function
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from ogb.nodeproppred import Evaluator
  from ogb.nodeproppred.dataset_dgl import DglNodePropPredDataset
  from torch.optim import Adam
  from torch.optim.lr_scheduler import ReduceLROnPlateau
  from torch.utils.tensorboard import SummaryWriter
  from utils import load_model, set_random_seed
label_desc: Use image node_id 3 for calling a global function with example usage: run_an_eval_epoch(graph, splitted_idx, model, evaluator) and returns: train_score,  val_score,  test_score