code: def evaluate(model, embed_layer, eval_loader, node_feats):
      model.eval()
      embed_layer.eval()
      eval_logits = []
      eval_seeds = []
  
      with th.no_grad():
          for sample_data in eval_loader:
              th.cuda.empty_cache()
              _, _, blocks = sample_data
              feats = embed_layer(
                  blocks[0].srcdata[dgl.NID],
                  blocks[0].srcdata[dgl.NTYPE],
                  blocks[0].srcdata["type_id"],
                  node_feats,
              )
              logits = model(blocks, feats)
              eval_logits.append(logits.cpu().detach())
              eval_seeds.append(
                  blocks[-1].dstdata["type_id"].cpu().detach()
              )
      eval_logits = th.cat(eval_logits)
      eval_seeds = th.cat(eval_seeds)
  
      return eval_logits, eval_seeds
  
imports: import itertools
  import time
  import dgl
  import dgl.nn.pytorch
  import torch
  import torch.multiprocessing
  import torch.nn
  import torch.nn.functional
  import torch.optim
  from dgl.nn import RelGraphConv
  from torch.utils.data import DataLoader
  from ..None import utils
label_desc: Use image node_id 1 for calling a global function with example usage: evaluate(model, embed_layer, eval_loader, node_feats) and returns: eval_logits,  eval_seeds