code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      expansion_ratio: float,
      activation: type[Module] = nn.GELU,
      drop_path: float = 0.0,
  ) -> None:
      super().__init__()
      hidden_channels = int(in_channels * expansion_ratio)
      self.conv1 = ConvBN(
          in_channels, hidden_channels, 1, activation=activation
      )  # point-wise
      self.conv2 = ConvBN(
          hidden_channels,
          hidden_channels,
          3,
          1,
          1,
          hidden_channels,
          activation,
      )  # depth-wise
      self.conv3 = ConvBN(hidden_channels, out_channels, 1)
      self.drop_path = DropPath(drop_path)
      self.act = activation()
  
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 MBConv object from inherited base classes: Module with example: obj = MBConv(in_channels, out_channels, expansion_ratio, activation, drop_path)