code: def evaluate(model, dataloader, device):
      model.eval()
  
      y_pred, y_true = [], []
      for g, labels in tqdm(dataloader, ncols=100):
          g = g.to(device)
          logits = model(g, g.ndata["z"], g.ndata[NID], g.edata[EID])
          y_pred.append(logits.view(-1).cpu())
          y_true.append(labels.view(-1).cpu().to(torch.float))
  
      y_pred, y_true = torch.cat(y_pred), torch.cat(y_true)
      pos_pred = y_pred[y_true == 1]
      neg_pred = y_pred[y_true == 0]
  
      return pos_pred, neg_pred
  
file_path: dgl/examples/pytorch/seal/main.py
imports: import time
  import numpy
  import torch
  import torch.multiprocessing
  from dgl import EID, NID
  from dgl.dataloading import GraphDataLoader
  from logger import LightLogging
  from model import DGCNN, GCN
  from sampler import SEALData
  from torch.nn import BCEWithLogitsLoss
  from tqdm import tqdm
  from utils import evaluate_hits, load_ogb_dataset, parse_arguments
label_desc: Use image node_id 2 for calling a global function with example usage: evaluate(model, dataloader, device) and returns: pos_pred,  neg_pred