code: def forward(self, inputs, drop_connect_rate=None):
      # expansion and depthwise conv
      x = inputs
      if self._block_args.expand_ratio != 1:
          x = self._swish(self._bn0(self._expand_conv(inputs)))
      x = self._swish(self._bn1(self._depthwise_conv(x)))
  
      # squeeze and excitation
      if self.has_se:
          x_squeezed = F.adaptive_avg_pool2d(x, 1)
          x_squeezed = self._se_expand(
              self._swish(self._se_reduce(x_squeezed))
          )
          x = F.sigmoid(x_squeezed) * x
      x = self._bn2(self._project_conv(x))
  
      # skip conntection and drop connect
      if (
          self.id_skip
          and self._block_args.stride == 1
          and self.inp == self.final_oup
      ):
          if drop_connect_rate:
              x = self._drop_connect(
                  x, p=drop_connect_rate, training=self.training
              )
          x = x + inputs
      return x
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import re
  import collections
  import paddle
  import paddle.nn
  import paddle.nn.functional
label_desc: Use image node_id 3 for calling the MbConvBlock obj's underlying member method code with example usage: obj.forward(inputs, drop_connect_rate) and returns: x