code: def __init__(
      self,
      in_features: int,
      hidden_features: int,
      out_features: int,
      activation: type[Module] = nn.GELU,
      drop: float = 0.0,
  ) -> None:
      super().__init__()
      self.norm = nn.LayerNorm(in_features)
      self.fc1 = nn.Linear(in_features, hidden_features)
      self.act1 = activation()
      self.drop1 = nn.Dropout(drop)
      self.fc2 = nn.Linear(hidden_features, out_features)
      self.drop2 = nn.Dropout(drop)
  
imports: from __future__ import annotations
  import itertools
  import warnings
  from typing import Any, Optional
  import torch
  import torch.nn.functional
  from torch import nn
  from torch.utils import checkpoint
  from kornia.contrib.models.common import DropPath, LayerNorm2d, window_partition, window_unpartition
  from kornia.core import Module, Tensor
  from kornia.core.check import KORNIA_CHECK
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, activation, drop)