code: def __init__(
      self,
      dim: int,
      depth: int,
      activation: type[Module] = nn.GELU,
      drop_path: float | list[float] = 0.0,
      downsample: Optional[Module] = None,
      use_checkpoint: bool = False,
      conv_expand_ratio: float = 4.0,
  ) -> None:
      super().__init__()
      self.use_checkpoint = use_checkpoint
  
      # build blocks
      if not isinstance(drop_path, list):
          drop_path = [drop_path] * depth
      self.blocks = nn.ModuleList(
          [
              MBConv(
                  dim, dim, conv_expand_ratio, activation, drop_path[i]
              )
              for i in range(depth)
          ]
      )
  
      # patch merging layer
      self.downsample = downsample
  
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 ConvLayer object from inherited base classes: Module with example: obj = ConvLayer(dim, depth, activation, drop_path, downsample, use_checkpoint, conv_expand_ratio)