class_docstr: This class implements the `MobileViT architecture <https://arxiv.org/abs/2110.02178?context=cs.LG>`_
code: def _make_layer(
      self,
      opts,
      input_channel,
      cfg: Dict,
      dilate: Optional[bool] = False,
      *args,
      **kwargs,
  ) -> Tuple[nn.Sequential, int]:
      block_type = cfg.get("block_type", "mobilevit")
      if block_type.lower() == "mobilevit":
          return self._make_mit_layer(
              opts=opts,
              input_channel=input_channel,
              cfg=cfg,
              dilate=dilate,
          )
      else:
          return self._make_mobilenet_layer(
              opts=opts, input_channel=input_channel, cfg=cfg
          )
  
file_path: ml-cvnets/cvnets/models/classification/mobilevit.py
imports: import argparse
  from typing import Dict, Optional, Tuple
  from torch import nn
  from cvnets.layers import ConvLayer2d, Dropout, GlobalPool, LinearLayer
  from cvnets.models import MODEL_REGISTRY
  from cvnets.models.classification.base_image_encoder import BaseImageEncoder
  from cvnets.models.classification.config.mobilevit import get_configuration
  from cvnets.modules import InvertedResidual, MobileViTBlock
  from utils import logger
label_desc: Use image node_id 3 for calling the MobileViT obj's underlying member method code with example usage: obj._make_layer(opts, input_channel, cfg, dilate) and returns: self, self