class_docstr: A class of MBConv: Mobile Inverted Residual Bottleneck.
  
  Attributes:
    endpoints: dict. A list of internal tensors.
class_docstr_tok: ["A","class","of","MBConv",":","Mobile","Inverted","Residual","Bottleneck",".","Attributes",":","endpoints",":","dict",".","A","list","of","internal","tensors","."]
docstr: Builds block according to the arguments.
docstr_tok: ["Builds","block","according","to","the","arguments","."]
code: def _build(self):
      """Builds block according to the arguments."""
      # pylint: disable=g-long-lambda
      bid = itertools.count(0)
      get_bn_name = lambda: "tpu_batch_normalization" + (
          "" if not next(bid) else "_" + str(next(bid) // 2)
      )
      cid = itertools.count(0)
      get_conv_name = lambda: "conv2d" + (
          "" if not next(cid) else "_" + str(next(cid) // 2)
      )
      # pylint: enable=g-long-lambda
  
      if self._block_args.super_pixel == 1:
          self.super_pixel = SuperPixel(
              self._block_args, self._global_params, name="super_pixel"
          )
      else:
          self.super_pixel = None
  
      filters = (
          self._block_args.input_filters * self._block_args.expand_ratio
      )
      kernel_size = self._block_args.kernel_size
  
      if self._block_args.fused_conv:
          # Fused expansion phase. Called if using fused convolutions.
          self._fused_conv = tf.keras.layers.Conv2D(
              filters=filters,
              kernel_size=[kernel_size, kernel_size],
              strides=self._block_args.strides,
              kernel_initializer=conv_kernel_initializer,
              padding="same",
              data_format=self._data_format,
              use_bias=False,
              name=get_conv_name(),
          )
      else:
          # Expansion phase. Called if not using fused convolutions and expansion
          # phase is necessary.
          if self._block_args.expand_ratio != 1:
              self._expand_conv = tf.keras.layers.Conv2D(
                  filters=filters,
                  kernel_size=[1, 1],
                  strides=[1, 1],
                  kernel_initializer=conv_kernel_initializer,
                  padding="same",
                  data_format=self._data_format,
                  use_bias=False,
                  name=get_conv_name(),
              )
              self._bn0 = self._batch_norm(
                  axis=self._channel_axis,
                  momentum=self._batch_norm_momentum,
                  epsilon=self._batch_norm_epsilon,
                  name=get_bn_name(),
              )
  
          # Depth-wise convolution phase. Called if not using fused convolutions.
          self._depthwise_conv = tf.keras.layers.DepthwiseConv2D(
              kernel_size=[kernel_size, kernel_size],
              strides=self._block_args.strides,
              depthwise_initializer=conv_kernel_initializer,
              padding="same",
              data_format=self._data_format,
              use_bias=False,
              name="depthwise_conv2d",
          )
  
      self._bn1 = self._batch_norm(
          axis=self._channel_axis,
          momentum=self._batch_norm_momentum,
          epsilon=self._batch_norm_epsilon,
          name=get_bn_name(),
      )
  
      if self._has_se:
          num_reduced_filters = max(
              1,
              int(
                  self._block_args.input_filters
                  * self._block_args.se_ratio
              ),
          )
          self._se = SE(
              self._global_params,
              num_reduced_filters,
              filters,
              name="se",
          )
      else:
          self._se = None
  
      # Output phase.
      filters = self._block_args.output_filters
      self._project_conv = tf.keras.layers.Conv2D(
          filters=filters,
          kernel_size=[1, 1],
          strides=[1, 1],
          kernel_initializer=conv_kernel_initializer,
          padding="same",
          data_format=self._data_format,
          use_bias=False,
          name=get_conv_name(),
      )
      self._bn2 = self._batch_norm(
          axis=self._channel_axis,
          momentum=self._batch_norm_momentum,
          epsilon=self._batch_norm_epsilon,
          name=get_bn_name(),
      )
  
imports: import collections
  import itertools
  import math
  from absl import logging
  import numpy
  import six
  from six.moves import xrange
  import tensorflow
  import utils
label_desc: Use image node_id 3 for calling the MBConvBlock obj's underlying member method code with example usage: obj._build() without return types