code: def forward(self, g, feat_a, feat_b, deg, pm_pd):
      # term "prev"
      prev_proj = self.linear_prev(feat_a)
      # term "deg"
      deg_proj = self.linear_deg(deg * feat_a)
  
      # term "radius"
      # aggregate 2^j-hop features
      hop2j_list = aggregate_radius(self.radius, g, feat_a)
      # apply linear transformation
      hop2j_list = [
          linear(x) for linear, x in zip(self.linear_radius, hop2j_list)
      ]
      radius_proj = sum(hop2j_list)
  
      # term "fuse"
      fuse = self.linear_fuse(th.mm(pm_pd, feat_b))
  
      # sum them together
      result = prev_proj + deg_proj + radius_proj + fuse
  
      # skip connection and batch norm
      n = self.out_feats // 2
      result = th.cat([result[:, :n], F.relu(result[:, n:])], 1)
      result = self.bn(result)
  
      return result
  
imports: import os
  import dgl
  import torch
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl.data import citation_graph
  import matplotlib.pyplot
  import networkx
  import dgl.function
  from torch.utils.data import DataLoader
label_desc: Use image node_id 2 for calling the LGNNCore obj's underlying member method code with example usage: obj.forward(g, feat_a, feat_b, deg, pm_pd) and returns: result