code: def __init__(
      self,
      in_chs,
      out_chs,
      kernel_size=3,
      stride=1,
      dilation=1,
      padding="",
      act_layer=nn.ReLU,
      norm_layer=nn.BatchNorm2d,
      first_act=True,
  ):
      super(PreSeparableConv2d, self).__init__()
      norm_act_layer = get_norm_act_layer(
          norm_layer, act_layer=act_layer
      )
      self.kernel_size = kernel_size
      self.dilation = dilation
  
      self.norm = (
          norm_act_layer(in_chs, inplace=True)
          if first_act
          else nn.Identity()
      )
      # depthwise convolution
      self.conv_dw = create_conv2d(
          in_chs,
          in_chs,
          kernel_size,
          stride=stride,
          padding=padding,
          dilation=dilation,
          depthwise=True,
      )
  
      # pointwise convolution
      self.conv_pw = create_conv2d(in_chs, out_chs, kernel_size=1)
  
imports: from functools import partial
  import torch
  import torch.nn
  from timm.data import IMAGENET_INCEPTION_MEAN, IMAGENET_INCEPTION_STD
  from timm.layers import ClassifierHead, ConvNormAct, create_conv2d, get_norm_act_layer
  from timm.layers.helpers import to_3tuple
  from ._builder import build_model_with_cfg
  from ._manipulate import checkpoint_seq
  from ._registry import register_model, generate_default_cfgs
label_desc: Use image node_id 1 to create a new PreSeparableConv2d object from inherited base classes: nn with example: obj = PreSeparableConv2d(in_chs, out_chs, kernel_size, stride, dilation, padding, act_layer, norm_layer, first_act)