code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      kernel_size=3,
      stride=1,
      use_bias=False,
      norm=("bn2d", "bn2d"),
      act_func=("relu6", None),
  ):
      super().__init__()
  
      use_bias = val2tuple(use_bias, 2)
      norm = val2tuple(norm, 2)
      act_func = val2tuple(act_func, 2)
  
      self.depth_conv = ConvLayer(
          in_channels,
          in_channels,
          kernel_size,
          stride,
          groups=in_channels,
          norm=norm[0],
          act_func=act_func[0],
          use_bias=use_bias[0],
      )
      self.point_conv = ConvLayer(
          in_channels,
          out_channels,
          1,
          norm=norm[1],
          act_func=act_func[1],
          use_bias=use_bias[1],
      )
  
imports: from __future__ import annotations
  import torch
  import torch.nn.functional
  from torch import nn
  from torch.cuda.amp import autocast
  from kornia.contrib.models.efficient_vit.nn.act import build_act
  from kornia.contrib.models.efficient_vit.nn.norm import build_norm
  from kornia.contrib.models.efficient_vit.utils import get_same_padding, val2tuple
label_desc: Use image node_id 1 to create a new DSConv object from inherited base classes: nn with example: obj = DSConv(in_channels, out_channels, kernel_size, stride, use_bias, norm, act_func)