class_docstr: Graph Convolutional layer from `Semi-Supervised Classification with Graph
  Convolutional Networks <https://arxiv.org/abs/1609.02907>`__
  
  We recommend user to use this module when applying graph convolution on
  dense graphs.
  
  Parameters
  ----------
  in_feats : int
      Input feature size; i.e, the number of dimensions of :math:`h_j^{(l)}`.
  out_feats : int
      Output feature size; i.e., the number of dimensions of :math:`h_i^{(l+1)}`.
  norm : str, optional
      How to apply the normalizer. If is `'right'`, divide the aggregated messages
      by each node's in-degrees, which is equivalent to averaging the received messages.
      If is `'none'`, no normalization is applied. Default is `'both'`,
      where the :math:`c_{ij}` in the paper is applied.
  bias : bool, optional
      If True, adds a learnable bias to the output. Default: ``True``.
  activation : callable activation function/layer or None, optional
      If not None, applies an activation function to the updated node features.
      Default: ``None``.
  
  Notes
  -----
  Zero in-degree nodes will lead to all-zero output. A common practice
  to avoid this is to add a self-loop for each node in the graph,
  which can be achieved by setting the diagonal of the adjacency matrix to be 1.
  
  See also
  --------
  `GraphConv <https://docs.dgl.ai/api/python/nn.pytorch.html#graphconv>`__
code: def __init__(
      self, in_feats, out_feats, norm="both", bias=True, activation=None
  ):
      super(DenseGraphConv, self).__init__()
      self._in_feats = in_feats
      self._out_feats = out_feats
      self._norm = norm
      with self.name_scope():
          self.weight = self.params.get(
              "weight",
              shape=(in_feats, out_feats),
              init=mx.init.Xavier(magnitude=math.sqrt(2.0)),
          )
          if bias:
              self.bias = self.params.get(
                  "bias", shape=(out_feats,), init=mx.init.Zero()
              )
          else:
              self.bias = None
          self._activation = activation
  
file_path: dgl/python/dgl/nn/mxnet/conv/densegraphconv.py
imports: import math
  import mxnet
  from mxnet import nd
  from mxnet.gluon import nn
label_desc: Use image node_id 1 to create a new DenseGraphConv object from inherited base classes: nn with example: obj = DenseGraphConv(in_feats, out_feats, norm, bias, activation)