class_docstr: Single Inverted bottleneck implementation.
  Args:
      in_channels (int): The number of input channels to bottleneck block.
      out_channels (int): The number of output channels of bottleneck block.
      expansion (int, optional). The expansion factor in bottleneck. Default: 6.
      stride (int, optional). The stride used in depth-wise conv. Defalt: 2.
code: def __init__(self, in_channels, out_channels, expansion=6, stride=2):
      super().__init__()
  
      self.use_shortcut = stride == 1 and in_channels == out_channels
  
      expand_channels = in_channels * expansion
      self.block = nn.Sequential(
          # pw
          layers.ConvBNReLU(
              in_channels=in_channels,
              out_channels=expand_channels,
              kernel_size=1,
              bias_attr=False,
          ),
          # dw
          layers.ConvBNReLU(
              in_channels=expand_channels,
              out_channels=expand_channels,
              kernel_size=3,
              stride=stride,
              padding=1,
              groups=expand_channels,
              bias_attr=False,
          ),
          # pw-linear
          layers.ConvBN(
              in_channels=expand_channels,
              out_channels=out_channels,
              kernel_size=1,
              bias_attr=False,
          ),
      )
  
imports: import paddle.nn
  import paddle.nn.functional
  import paddle
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
  from paddleseg.utils import utils
label_desc: Use image node_id 1 to create a new InvertedBottleneck object from inherited base classes: nn with example: obj = InvertedBottleneck(in_channels, out_channels, expansion, stride)