code: def __init__(
      self,
      in_channels,
      hidden_dim,
      output_channels,
      kernel_size,
      stride,
      use_se,
      name=None,
  ):
      super(GhostBottleneck, self).__init__()
      self._stride = stride
      self._use_se = use_se
      self._num_channels = in_channels
      self._output_channels = output_channels
      self.ghost_module_1 = GhostModule(
          in_channels=in_channels,
          output_channels=hidden_dim,
          kernel_size=1,
          stride=1,
          relu=True,
          name=name + "_ghost_module_1",
      )
      if stride == 2:
          self.depthwise_conv = ConvBNLayer(
              in_channels=hidden_dim,
              out_channels=hidden_dim,
              kernel_size=kernel_size,
              stride=stride,
              groups=hidden_dim,
              act=None,
              name=name
              + "_depthwise_depthwise",  # looks strange due to an old typo, will be fixed later.
          )
      if use_se:
          self.se_block = SEBlock(
              num_channels=hidden_dim, name=name + "_se"
          )
      self.ghost_module_2 = GhostModule(
          in_channels=hidden_dim,
          output_channels=output_channels,
          kernel_size=1,
          relu=False,
          name=name + "_ghost_module_2",
      )
      if stride != 1 or in_channels != output_channels:
          self.shortcut_depthwise = ConvBNLayer(
              in_channels=in_channels,
              out_channels=in_channels,
              kernel_size=kernel_size,
              stride=stride,
              groups=in_channels,
              act=None,
              name=name
              + "_shortcut_depthwise_depthwise",  # looks strange due to an old typo, will be fixed later.
          )
          self.shortcut_conv = ConvBNLayer(
              in_channels=in_channels,
              out_channels=output_channels,
              kernel_size=1,
              stride=1,
              groups=1,
              act=None,
              name=name + "_shortcut_conv",
          )
  
imports: import os
  import math
  from typing import Union
  import paddle
  import paddle.nn
  import paddle.nn.functional
  import paddlehub.vision.transforms
  import numpy
  from paddle import ParamAttr
  from paddle.nn.initializer import Uniform, KaimingNormal
  from paddlehub.module.module import moduleinfo
  from paddlehub.module.cv_module import ImageClassifierModule
label_desc: Use image node_id 1 to create a new GhostBottleneck object from inherited base classes: nn with example: obj = GhostBottleneck(in_channels, hidden_dim, output_channels, kernel_size, stride, use_se, name)