code: def forward(self, h):
      self.g.ndata["h"] = h * self.g.ndata["out_norm"]
      self.g.update_all(
          fn.copy_u(u="h", out="m"), fn.sum(msg="m", out="accum")
      )
      accum = self.g.ndata.pop("accum")
      accum = self.dense(accum * self.g.ndata["in_norm"])
      if self.dropout:
          accum = mx.nd.Dropout(accum, p=self.dropout)
      h = self.g.ndata.pop("h")
      h = mx.nd.concat(h / self.g.ndata["out_norm"], accum, dim=1)
      return h
  
file_path: dgl/examples/mxnet/gcn/gcn_concat.py
imports: import argparse
  import time
  import dgl
  import dgl.function
  import mxnet
  import numpy
  from dgl.data import CiteseerGraphDataset, CoraGraphDataset, PubmedGraphDataset, register_data_args
  from mxnet import gluon
label_desc: Use image node_id 2 for calling the GCNLayer obj's underlying member method code with example usage: obj.forward(h) and returns: h