class_docstr: MLP module w/ dropout and configurable activation layer,
  as used in Vision Transformer, MLP-Mixer and related networks.
  
  Args:
      - in_features (`int`):
          Number of input features.
      - hidden_features (`int`):
          Number of hidden features.
      - out_features (`int`):
          Number of output features.
      - act_layer (`nn.Module`):
          Activation layer.
      - drop (`float`):
          Dropout rate.
  
  Example:
      >>> import torch
      >>> from towhee.models.layers.mlp import Mlp
      >>>
      >>> fake_input = torch.rand(1, 4)
      >>> layer = Mlp(in_features=4, hidden_features=6, out_features=8)
      >>> output = layer(fake_input)
      >>> print(output.shape)
      torch.Size([1, 8])
code: def __init__(
      self,
      in_features,
      hidden_features=None,
      out_features=None,
      act_layer=GELU,
      drop=0.0,
  ):
      super().__init__()
      out_features = out_features or in_features
      hidden_features = hidden_features or in_features
      self.fc1 = Linear(
          in_features=in_features, out_features=hidden_features
      )  # pylint: disable=unexpected-keyword-arg
      self.act = act_layer()
      self.fc2 = Linear(
          in_features=hidden_features, out_features=out_features
      )  # pylint: disable=unexpected-keyword-arg
      self.drop = Dropout(p=drop)
  
imports: from torch import nn
  from towhee.models.layers.layers_with_relprop import GELU, Linear, Dropout
label_desc: Use image node_id 1 to create a new Mlp object from inherited base classes: nn with example: obj = Mlp(in_features, hidden_features, out_features, act_layer, drop)