code: def __init__(self, args, dev_id):
      super(Net, self).__init__()
      self._act = get_activation(args.model_activation)
      self.encoder = GCMCLayer(
          args.rating_vals,
          args.src_in_units,
          args.dst_in_units,
          args.gcn_agg_units,
          args.gcn_out_units,
          args.gcn_dropout,
          args.gcn_agg_accum,
          agg_act=self._act,
          share_user_item_param=args.share_param,
          device=dev_id,
      )
      if args.mix_cpu_gpu and args.use_one_hot_fea:
          # if use_one_hot_fea, user and movie feature is None
          # W can be extremely large, with mix_cpu_gpu W should be stored in CPU
          self.encoder.partial_to(dev_id)
      else:
          self.encoder.to(dev_id)
  
      self.decoder = BiDecoder(
          in_units=args.gcn_out_units,
          num_classes=len(args.rating_vals),
          num_basis=args.gen_r_num_basis_func,
      )
      self.decoder.to(dev_id)
  
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 to create a new Net object from inherited base classes: nn with example: obj = Net(args, dev_id)