code: def __init__(
      self,
      n_input,
      n_hidden,
      n_output,
      n_layers,
      activation,
      dropout,
      residual=False,
      aggr_mode="sum",
      device="cpu",
  ):
      super(MWE_DGCN, self).__init__()
      self.n_layers = n_layers
      self.activation = activation
      self.dropout = dropout
      self.residual = residual
  
      self.layers = nn.ModuleList()
      self.layer_norms = nn.ModuleList()
  
      self.layers.append(
          MWEConv(
              n_input,
              n_hidden,
              activation=activation,
              aggr_mode=aggr_mode,
          )
      )
  
      for i in range(n_layers - 1):
          self.layers.append(
              MWEConv(
                  n_hidden,
                  n_hidden,
                  activation=activation,
                  aggr_mode=aggr_mode,
              )
          )
  
      for i in range(n_layers):
          self.layer_norms.append(
              nn.LayerNorm(n_hidden, elementwise_affine=True)
          )
  
      self.pred_out = nn.Linear(n_hidden, n_output)
      self.device = device
  
imports: import math
  from functools import partial
  import dgl.function
  import dgl.nn.pytorch
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl import function
  from dgl._ffi.base import DGLError
  from dgl.base import ALL
  from dgl.nn.pytorch.utils import Identity
  from dgl.ops import edge_softmax
  from dgl.utils import expand_as_pair
  from torch.nn import init
  from torch.utils.checkpoint import checkpoint
label_desc: Use image node_id 1 to create a new MWE_DGCN object from inherited base classes: nn with example: obj = MWE_DGCN(n_input, n_hidden, n_output, n_layers, activation, dropout, residual, aggr_mode, device)