code: def forward(self, dgl_graph, node_emb):
      with dgl_graph.local_scope():
          dgl_graph.srcdata.update({"ft": node_emb})
          dgl_graph.update_all(
              fn.u_mul_e("ft", "edge_weight", "m"), fn.sum("m", "ft")
          )
          agg_vec = dgl_graph.dstdata["ft"]
          new_node_vec = self.linear_out(agg_vec)
  
          return new_node_vec
  
imports: import argparse
  import os
  import time
  import dgl
  import dgl.function
  import networkx
  import numpy
  import torch
  import torch.backends.cudnn
  import torch.nn
  import torch.nn.functional
  from dgl import DGLGraph
  from dgl.data import load_data, register_data_args
  from scipy import sparse
  from ...modules.graph_construction import NodeEmbeddingBasedGraphConstruction, NodeEmbeddingBasedRefinedGraphConstruction
  from ...modules.utils.vocab_utils import VocabModel
  from ..utils import EarlyStopping
label_desc: Use image node_id 2 for calling the GNNLayer obj's underlying member method code with example usage: obj.forward(dgl_graph, node_emb) and returns: new_node_vec