class_docstr: MobileNetV3
  Args:
      config: list. MobileNetV3 depthwise blocks config.
      in_channels (int, optional): The channels of input image. Default: 3.
      scale: float=1.0. The coefficient that controls the size of network parameters. 
  Returns:
      model: nn.Layer. Specific MobileNetV3 model depends on args.
class_docstr_tok: ["MobileNetV3","Args",":","config",":","list",".","MobileNetV3","depthwise","blocks","config",".","in_channels","(","int",",","optional",")",":","The","channels","of","input","image",".","Default",":","3.","scale",":","float=1.0",".","The","coefficient","that","controls","the","size","of","network","parameters",".","Returns",":","model",":","nn.Layer",".","Specific","MobileNetV3","model","depends","on","args","."]
code: def __init__(
      self,
      config,
      stages_pattern,
      out_index,
      in_channels=3,
      scale=1.0,
      class_squeeze=960,
      return_last_conv=False,
      pretrained=None,
  ):
      super().__init__()
  
      self.cfg = config
      self.out_index = out_index
      self.scale = scale
      self.pretrained = pretrained
      self.class_squeeze = class_squeeze
      self.return_last_conv = return_last_conv
      inplanes = 16
  
      self.conv = ConvBNLayer(
          in_c=in_channels,
          out_c=_make_divisible(inplanes * self.scale),
          filter_size=3,
          stride=2,
          padding=1,
          num_groups=1,
          if_act=True,
          act="hardswish",
      )
      self.blocks = nn.Sequential(
          *[
              ResidualUnit(
                  in_c=_make_divisible(
                      inplanes * self.scale
                      if i == 0
                      else self.cfg[i - 1][2] * self.scale
                  ),
                  mid_c=_make_divisible(self.scale * exp),
                  out_c=_make_divisible(self.scale * c),
                  filter_size=k,
                  stride=s,
                  use_se=se,
                  act=act,
                  dilation=td[0] if td else 1,
              )
              for i, (k, exp, c, se, act, s, *td) in enumerate(self.cfg)
          ]
      )
      self.last_second_conv = ConvBNLayer(
          in_c=_make_divisible(self.cfg[-1][2] * self.scale),
          out_c=_make_divisible(self.scale * self.class_squeeze),
          filter_size=1,
          stride=1,
          padding=0,
          num_groups=1,
          if_act=True,
          act="hardswish",
      )
  
      # return feat_channels information
      out_channels = [config[idx][2] for idx in out_index]
      if return_last_conv:
          out_channels.append(class_squeeze)
      self.feat_channels = [
          _make_divisible(self.scale * c) for c in out_channels
      ]
  
      self.mean = paddle.to_tensor([0.485, 0.456, 0.406]).unsqueeze(
          (0, 2, 3)
      )
      self.std = paddle.to_tensor([0.229, 0.224, 0.225]).unsqueeze(
          (0, 2, 3)
      )
  
      self.init_res(stages_pattern)
      self.init_weight()
  
imports: import paddle
  import paddle.nn
  from paddle import ParamAttr
  from paddle.regularizer import L2Decay
  from paddle.nn import AdaptiveAvgPool2D, BatchNorm, Conv2D, Dropout, Linear
  from paddleseg.cvlibs import manager
  from paddleseg.utils import utils, logger
  from paddleseg.models import layers
label_desc: Use image node_id 1 to create a new MobileNetV3 object from inherited base classes: nn with example: obj = MobileNetV3(config, stages_pattern, out_index, in_channels, scale, class_squeeze, return_last_conv, pretrained)