code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size,
      padding,
      stride=1,
      groups=None,
      if_act=True,
      act="relu",
      **kwargs,
  ):
      super(DSConv, self).__init__()
      if groups == None:
          groups = in_channels
      self.if_act = if_act
      self.act = act
      self.conv1 = nn.Conv2D(
          in_channels=in_channels,
          out_channels=in_channels,
          kernel_size=kernel_size,
          stride=stride,
          padding=padding,
          groups=groups,
          bias_attr=False,
      )
  
      self.bn1 = nn.BatchNorm(num_channels=in_channels, act=None)
  
      self.conv2 = nn.Conv2D(
          in_channels=in_channels,
          out_channels=int(in_channels * 4),
          kernel_size=1,
          stride=1,
          bias_attr=False,
      )
  
      self.bn2 = nn.BatchNorm(
          num_channels=int(in_channels * 4), act=None
      )
  
      self.conv3 = nn.Conv2D(
          in_channels=int(in_channels * 4),
          out_channels=out_channels,
          kernel_size=1,
          stride=1,
          bias_attr=False,
      )
      self._c = [in_channels, out_channels]
      if in_channels != out_channels:
          self.conv_end = nn.Conv2D(
              in_channels=in_channels,
              out_channels=out_channels,
              kernel_size=1,
              stride=1,
              bias_attr=False,
          )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  from paddle import nn
  import paddle.nn.functional
  from paddle import ParamAttr
  import os
  import sys
  from ppocr.modeling.necks.intracl import IntraCLBlock
  from ppocr.modeling.backbones.det_mobilenet_v3 import SEModule
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, padding, stride, groups, if_act, act)