code: def eval_test(
      parser, test_p_list, model, test_exe, dataset, split_idx
  ):
      eval_gg = SampleDataGenerator(
          graph_wrappers=[model.gw_list[0]],
          buf_size=parser.buf_size,
          batch_size=parser.batch_size,
          num_workers=1,
          sizes=[
              -1,
          ],
          shuffle=False,
          dataset=dataset,
          nodes_idx=None,
      )
  
      out_r_temp = []
      test_p, out = test_p_list[0]
  
      pbar = tqdm(total=eval_gg.num_nodes * model.num_layers)
      pbar.set_description("Evaluating")
  
      for feed_batch in tqdm(eval_gg.generator()):
          feed_batch["label_idx"] = split_idx["train"]
          feat_batch = test_exe.run(
              test_p, feed=feed_batch, fetch_list=out
          )
          out_r_temp.append(feat_batch[0])
          pbar.update(feed_batch["label"].shape[0])
  
      our_r = np.concatenate(out_r_temp, axis=0)
  
      for test_p, out in test_p_list[1:]:  # np.concatenate
          out_r_temp = []
          for feed_batch in tqdm(eval_gg.generator()):
              feed_batch["hidden_node_feat"] = our_r[
                  feed_batch["batch_nodes_0"]
              ]
              feat_batch = test_exe.run(
                  test_p, feed=feed_batch, fetch_list=out
              )
              out_r_temp.append(feat_batch[0])
              pbar.update(feed_batch["label"].shape[0])
          our_r = np.concatenate(out_r_temp, axis=0)
      pbar.close()
  
      y_pred = our_r.argmax(axis=-1)
      y_pred = np.expand_dims(y_pred, 1)
      y_true = eval_gg.labels
      train_acc = evaluator.eval(
          {
              "y_true": y_true[split_idx["train"]],
              "y_pred": y_pred[split_idx["train"]],
          }
      )["acc"]
      val_acc = evaluator.eval(
          {
              "y_true": y_true[split_idx["valid"]],
              "y_pred": y_pred[split_idx["valid"]],
          }
      )["acc"]
      test_acc = evaluator.eval(
          {
              "y_true": y_true[split_idx["test"]],
              "y_pred": y_pred[split_idx["test"]],
          }
      )["acc"]
  
      return train_acc, val_acc, test_acc
  
imports: import math
  import torch
  import paddle
  import pgl
  import numpy
  import paddle.fluid
  import paddle.fluid.layers
  import copy
  from pgl.contrib.ogb.nodeproppred.dataset_pgl import PglNodePropPredDataset
  from ogb.nodeproppred import Evaluator
  from utils import to_undirected, add_self_loop, linear_warmup_decay
  from model import Products_label_embedding_model
  from dataloader.ogb_products_dataloader import SampleDataGenerator
  import paddle.fluid.profiler
  from pgl.utils import paddle_helper
  import argparse
  from tqdm import tqdm
label_desc: Use image node_id 3 for calling a global function with example usage: eval_test(parser, test_p_list, model, test_exe, dataset, split_idx) and returns: train_acc,  val_acc,  test_acc