code: def __init__(
      self,
      in_channels,
      hidden_channels=None,
      out_channels=None,
      drop_rate=0.0,
  ):
      super().__init__()
      hidden_channels = hidden_channels or in_channels
      out_channels = out_channels or in_channels
      self.norm = bn2d(in_channels, epsilon=1e-06)
      self.conv1 = nn.Conv2D(in_channels, hidden_channels, 3, 1, 1)
      self.act = nn.GELU()
      self.conv2 = nn.Conv2D(hidden_channels, out_channels, 3, 1, 1)
      self.drop = nn.Dropout(drop_rate)
  
      self.apply(self._init_weights)
  
imports: from functools import partial
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager, param_init
  from paddleseg.models import layers
  from paddleseg.utils import utils
  from paddleseg.models.backbones.transformer_utils import DropPath, Identity
  from paddleseg.cvlibs.param_init import constant_init, kaiming_normal_init, trunc_normal_init
label_desc: Use image node_id 1 to create a new MLP object from inherited base classes: nn with example: obj = MLP(in_channels, hidden_channels, out_channels, drop_rate)