code: def load_subtensor(
      input_nodes, pair_graph, blocks, dataset, parent_graph
  ):
      output_nodes = pair_graph.ndata[dgl.NID]
      head_feat = (
          input_nodes["user"]
          if dataset.user_feature is None
          else dataset.user_feature[input_nodes["user"]]
      )
      tail_feat = (
          input_nodes["movie"]
          if dataset.movie_feature is None
          else dataset.movie_feature[input_nodes["movie"]]
      )
  
      for block in blocks:
          block.dstnodes["user"].data["ci"] = parent_graph.nodes[
              "user"
          ].data["ci"][block.dstnodes["user"].data[dgl.NID]]
          block.srcnodes["user"].data["cj"] = parent_graph.nodes[
              "user"
          ].data["cj"][block.srcnodes["user"].data[dgl.NID]]
          block.dstnodes["movie"].data["ci"] = parent_graph.nodes[
              "movie"
          ].data["ci"][block.dstnodes["movie"].data[dgl.NID]]
          block.srcnodes["movie"].data["cj"] = parent_graph.nodes[
              "movie"
          ].data["cj"][block.srcnodes["movie"].data[dgl.NID]]
  
      return head_feat, tail_feat, blocks
  
imports: import argparse
  import logging
  import os, time
  import random
  import string
  import traceback
  import dgl
  import numpy
  import torch
  import torch.multiprocessing
  import torch.nn
  import tqdm
  from data import MovieLens
  from model import BiDecoder, DenseBiDecoder, GCMCLayer
  from torch.nn.parallel import DistributedDataParallel
  from torch.utils.data import DataLoader
  from utils import get_activation, get_optimizer, MetricLogger, to_etype_name, torch_net_info, torch_total_param_num
label_desc: Use image node_id 1 for calling a global function with example usage: load_subtensor(input_nodes, pair_graph, blocks, dataset, parent_graph) and returns: head_feat,  tail_feat,  blocks