docstr: Multilayer Perceptron (MLP)
docstr_tok: ["Multilayer","Perceptron","(","MLP",")"]
code: def __init__(
      self,
      in_feat_size: int,
      out_feat_size: int,
      num_layers: int = 3,
      decreasing_hidden_size=False,
  ):
      """Multilayer Perceptron (MLP)"""
      super(MLP, self).__init__()
  
      self.layers = nn.ModuleList()
      if decreasing_hidden_size:
          for i in range(num_layers - 1):
              self.layers.append(
                  nn.Linear(
                      in_feat_size // 2**i,
                      in_feat_size // 2 ** (i + 1),
                  )
              )
          self.layers.append(
              nn.Linear(
                  in_feat_size // 2 ** (num_layers - 1), out_feat_size
              )
          )
      else:
          self.layers.append(nn.Linear(in_feat_size, out_feat_size))
          for _ in range(num_layers - 1):
              self.layers.append(
                  nn.Linear(out_feat_size, out_feat_size)
              )
      self.num_layers = num_layers
  
imports: from typing import List
  import dgl.function
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl.nn import AvgPooling, SumPooling
  from ogb.graphproppred.mol_encoder import AtomEncoder
label_desc: Use image node_id 1 to create a new MLP object from inherited base classes: nn with example: obj = MLP(in_feat_size, out_feat_size, num_layers, decreasing_hidden_size)