class_docstr: This class defines the `MobileViT block <https://arxiv.org/abs/2110.02178?context=cs.LG>`_
  
  Args:
      opts: command line arguments
      in_channels (int): :math:`C_{in}` from an expected input of size :math:`(N, C_{in}, H, W)`
      transformer_dim (int): Input dimension to the transformer unit
      ffn_dim (int): Dimension of the FFN block
      n_transformer_blocks (Optional[int]): Number of transformer blocks. Default: 2
      head_dim (Optional[int]): Head dimension in the multi-head attention. Default: 32
      attn_dropout (Optional[float]): Dropout in multi-head attention. Default: 0.0
      dropout (Optional[float]): Dropout rate. Default: 0.0
      ffn_dropout (Optional[float]): Dropout between FFN layers in transformer. Default: 0.0
      patch_h (Optional[int]): Patch height for unfolding operation. Default: 8
      patch_w (Optional[int]): Patch width for unfolding operation. Default: 8
      transformer_norm_layer (Optional[str]): Normalization layer in the transformer block. Default: layer_norm
      conv_ksize (Optional[int]): Kernel size to learn local representations in MobileViT block. Default: 3
      dilation (Optional[int]): Dilation rate in convolutions. Default: 1
      no_fusion (Optional[bool]): Do not combine the input and output feature maps. Default: False
code: def __repr__(self) -> str:
      repr_str = "{}(".format(self.__class__.__name__)
  
      repr_str += "\n\t Local representations"
      if isinstance(self.local_rep, nn.Sequential):
          for m in self.local_rep:
              repr_str += "\n\t\t {}".format(m)
      else:
          repr_str += "\n\t\t {}".format(self.local_rep)
  
      repr_str += (
          "\n\t Global representations with patch size of {}x{}".format(
              self.patch_h, self.patch_w
          )
      )
      if isinstance(self.global_rep, nn.Sequential):
          for m in self.global_rep:
              repr_str += "\n\t\t {}".format(m)
      else:
          repr_str += "\n\t\t {}".format(self.global_rep)
  
      if isinstance(self.conv_proj, nn.Sequential):
          for m in self.conv_proj:
              repr_str += "\n\t\t {}".format(m)
      else:
          repr_str += "\n\t\t {}".format(self.conv_proj)
  
      if self.fusion is not None:
          repr_str += "\n\t Feature fusion"
          if isinstance(self.fusion, nn.Sequential):
              for m in self.fusion:
                  repr_str += "\n\t\t {}".format(m)
          else:
              repr_str += "\n\t\t {}".format(self.fusion)
  
      repr_str += "\n)"
      return repr_str
  
imports: import math
  from typing import Dict, Optional, Sequence, Tuple, Union
  import numpy
  import torch
  from torch import Tensor, nn
  from torch.nn import functional
  from cvnets.layers import ConvLayer2d, get_normalization_layer
  from cvnets.modules.base_module import BaseModule
  from cvnets.modules.transformer import LinearAttnFFN, TransformerEncoder
label_desc: Use image node_id 2 for calling the MobileViTBlock obj's underlying member method code with example usage: obj.__repr__() and returns: repr_str