code: def __init__(
      self,
      in_feats,
      n_classes,
      n_layers,
      n_hidden,
      activation,
      dropout=0.0,
      input_drop=0.0,
      residual=False,
  ):
      super().__init__()
      self.n_layers = n_layers
      self.n_hidden = n_hidden
      self.n_classes = n_classes
  
      self.linears = nn.ModuleList()
      self.norms = nn.ModuleList()
  
      for i in range(n_layers):
          in_hidden = n_hidden if i > 0 else in_feats
          out_hidden = n_hidden if i < n_layers - 1 else n_classes
  
          self.linears.append(nn.Linear(in_hidden, out_hidden))
  
          if i < n_layers - 1:
              self.norms.append(nn.BatchNorm1d(out_hidden))
  
      self.activation = activation
      self.input_drop = nn.Dropout(input_drop)
      self.dropout = nn.Dropout(dropout)
      self.residual = residual
  
file_path: dgl/examples/pytorch/ogb/ogbn-products/gat/models.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from dgl import function
  from dgl.ops import edge_softmax
  from dgl.utils import expand_as_pair
label_desc: Use image node_id 1 to create a new MLP object from inherited base classes: nn with example: obj = MLP(in_feats, n_classes, n_layers, n_hidden, activation, dropout, input_drop, residual)