class_docstr: This class stores the config for each block in EfficientNet i.e. MBConv layers
  in Table 1 of `EfficientNet paper <https://arxiv.org/abs/1905.11946>`_
  Notably, this class takes width_mult and depth_mult as input too and adjusts
  layers' depth and width, as is required in different modes of EfficientNet.
code: def __init__(
      self,
      expand_ratio: float,
      kernel: int,
      stride: int,
      in_channels: int,
      out_channels: int,
      num_layers: int,
      width_mult: float,
      depth_mult: float,
  ):
      self.expand_ratio = expand_ratio
      self.kernel = kernel
      self.stride = stride
      self.in_channels = int(
          make_divisible(in_channels * width_mult, 8)
      )
      self.out_channels = int(
          make_divisible(out_channels * width_mult, 8)
      )
      self.num_layers = int(math.ceil(num_layers * depth_mult))
  
file_path: ml-cvnets/cvnets/models/classification/config/efficientnet.py
imports: import math
  from dataclasses import dataclass
  from functools import partial
  from typing import Dict
  from utils import logger
  from utils.math_utils import make_divisible
label_desc: Use image node_id 1 to create a new EfficientNetBlockConfig object  with example: obj = EfficientNetBlockConfig(expand_ratio, kernel, stride, in_channels, out_channels, num_layers, width_mult, depth_mult)