docstr: Note: MLP works for 0 layers
docstr_tok: ["Note",":","MLP","works","for","0","layers"]
code: def __init__(
      self,
      dim_in,
      dim_out,
      bias=True,
      dim_inner=None,
      num_layers=2,
      **kwargs,
  ):
      """
      Note: MLP works for 0 layers
      """
      super(MLP, self).__init__()
      dim_inner = dim_in if dim_inner is None else dim_inner
      layers = []
      if num_layers > 1:
          layers.append(
              GeneralMultiLayer(
                  "linear",
                  num_layers - 1,
                  dim_in,
                  dim_inner,
                  dim_inner,
                  final_act=True,
              )
          )
          layers.append(Linear(dim_inner, dim_out, bias))
      else:
          layers.append(Linear(dim_in, dim_out, bias))
      self.model = nn.Sequential(*layers)
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  import torch_geometric
  import graphgym.register
  from graphgym.config import cfg
  from graphgym.contrib.layer.generalconv import GeneralConvLayer, GeneralEdgeConvLayer
  from graphgym.models.act import act_dict
label_desc: Use image node_id 1 to create a new MLP object from inherited base classes: nn with example: obj = MLP(dim_in, dim_out, bias, dim_inner, num_layers)