class_docstr: A basic MLP model.
  
  Args:
      layer_config (LayerConfig): The configuration of the layer.
      **kwargs (optional): Additional keyword arguments.
class_docstr_tok: ["A","basic","MLP","model",".","Args",":","layer_config","(","LayerConfig",")",":","The","configuration","of","the","layer",".","*","*","kwargs","(","optional",")",":","Additional","keyword","arguments","."]
code: def __init__(self, layer_config: LayerConfig, **kwargs):
      super().__init__()
      if layer_config.dim_inner is None:
          dim_inner = layer_config.dim_in
      else:
          dim_inner = layer_config.dim_inner
  
      layer_config.has_bias = True
      layers = []
      if layer_config.num_layers > 1:
          sub_layer_config = LayerConfig(
              num_layers=layer_config.num_layers - 1,
              dim_in=layer_config.dim_in,
              dim_out=dim_inner,
              dim_inner=dim_inner,
              final_act=True,
          )
          layers.append(GeneralMultiLayer("linear", sub_layer_config))
          layer_config = replace(layer_config, dim_in=dim_inner)
          layers.append(Linear(layer_config))
      else:
          layers.append(Linear(layer_config))
      self.model = torch.nn.Sequential(*layers)
  
imports: import copy
  from dataclasses import dataclass, replace
  import torch
  import torch.nn.functional
  import torch_geometric
  import torch_geometric.graphgym.models.act
  import torch_geometric.graphgym.register
  from torch_geometric.graphgym.contrib.layer.generalconv import GeneralConvLayer, GeneralEdgeConvLayer
  from torch_geometric.graphgym.register import register_layer
  from torch_geometric.nn import Linear
label_desc: Use image node_id 1 to create a new MLP object from inherited base classes: torch.nn with example: obj = MLP(layer_config)