class_docstr: Modified Mlp containing depthwise convolution, based on a standard Mlp in ViT.
  
  Args:
      in_features (`int`): input dimension
      hidden_features (`int`): dimension used in depthwise conv layer
      out_features (`int`): output dimension
      act_layer (`nn.Module`): activation layer
      drop (`float`): dropout rate
class_docstr_tok: ["Modified","Mlp","containing","depthwise","convolution",",","based","on","a","standard","Mlp","in","ViT",".","Args",":","in_features","(","`","int","`",")",":","input","dimension","hidden_features","(","`","int","`",")",":","dimension","used","in","depthwise","conv","layer","out_features","(","`","int","`",")",":","output","dimension","act_layer","(","`","nn.Module","`",")",":","activation","layer","drop","(","`","float","`",")",":","dropout","rate"]
code: def __init__(
      self,
      in_features,
      hidden_features=None,
      out_features=None,
      act_layer=nn.GELU,
      drop=0.0,
  ):
      super().__init__(
          in_features=in_features,
          hidden_features=hidden_features,
          out_features=out_features,
          act_layer=act_layer,
          drop=drop,
      )
      self.dwconv = nn.Conv2d(
          hidden_features,
          hidden_features,
          3,
          1,
          1,
          bias=True,
          groups=hidden_features,
      )
      self.apply(init_vit_weights)
  
imports: import torch
  from torch import nn
  from towhee.models.layers.patch_embed2d import PatchEmbed2D
  from towhee.models.layers.mlp import Mlp
  from towhee.models.layers.droppath import DropPath
  from towhee.models.utils.init_vit_weights import init_vit_weights
label_desc: Use image node_id 1 to create a new Mlp object from inherited base classes: ViTMlp with example: obj = Mlp(in_features, hidden_features, out_features, act_layer, drop)