code: def _inverted_res_block(
      inputs, expansion, stride, alpha, filters, block_id
  ):
      """Inverted ResNet block."""
      channel_axis = (
          1 if backend.image_data_format() == "channels_first" else -1
      )
  
      in_channels = inputs.shape[channel_axis]
      pointwise_conv_filters = int(filters * alpha)
      # Ensure the number of filters on the last 1x1 convolution is divisible by
      # 8.
      pointwise_filters = _make_divisible(pointwise_conv_filters, 8)
      x = inputs
      prefix = f"block_{block_id}_"
  
      if block_id:
          # Expand with a pointwise 1x1 convolution.
          x = layers.Conv2D(
              expansion * in_channels,
              kernel_size=1,
              padding="same",
              use_bias=False,
              activation=None,
              name=prefix + "expand",
          )(x)
          x = layers.BatchNormalization(
              axis=channel_axis,
              epsilon=1e-3,
              momentum=0.999,
              name=prefix + "expand_BN",
          )(x)
          x = layers.ReLU(6.0, name=prefix + "expand_relu")(x)
      else:
          prefix = "expanded_conv_"
  
      # Depthwise 3x3 convolution.
      if stride == 2:
          x = layers.ZeroPadding2D(
              padding=imagenet_utils.correct_pad(x, 3),
              name=prefix + "pad",
          )(x)
      x = layers.DepthwiseConv2D(
          kernel_size=3,
          strides=stride,
          activation=None,
          use_bias=False,
          padding="same" if stride == 1 else "valid",
          name=prefix + "depthwise",
      )(x)
      x = layers.BatchNormalization(
          axis=channel_axis,
          epsilon=1e-3,
          momentum=0.999,
          name=prefix + "depthwise_BN",
      )(x)
  
      x = layers.ReLU(6.0, name=prefix + "depthwise_relu")(x)
  
      # Project with a pointwise 1x1 convolution.
      x = layers.Conv2D(
          pointwise_filters,
          kernel_size=1,
          padding="same",
          use_bias=False,
          activation=None,
          name=prefix + "project",
      )(x)
      x = layers.BatchNormalization(
          axis=channel_axis,
          epsilon=1e-3,
          momentum=0.999,
          name=prefix + "project_BN",
      )(x)
  
      if in_channels == pointwise_filters and stride == 1:
          return layers.Add(name=prefix + "add")([inputs, x])
      return x
  
file_path: keras/keras/applications/mobilenet_v2.py
imports: import warnings
  from keras import backend
  from keras import layers
  from keras.api_export import keras_export
  from keras.applications import imagenet_utils
  from keras.models import Functional
  from keras.ops import operation_utils
  from keras.utils import file_utils
label_desc: Use image node_id 2 for calling a global function with example usage: _inverted_res_block(inputs, expansion, stride, alpha, filters, block_id) and returns: x, layers