class_docstr: The view of a config dict where keys can be accessed like attribute, it also prevents
  naive modifications to the key-values.
  
  Parameters
  ----------
  config : dict
      The configuration dict.
  
  Attributes
  ----------
  __dict__ : type
      The internal config as a `__dict__`.
code: def __setitem__(self, key, value):
      if self.__dict__.get("_freeze", False):
          msg = (
              'You are trying to modify the config to "{}={}" after initialization, '
              " this may result in unpredictable behaviour".format(
                  key, value
              )
          )
          warnings.warn(msg)
      if isinstance(value, dict) and not isinstance(value, ConfigDict):
          value = ConfigDict(value)
      super(ConfigDict, self).__setitem__(key, value)
  
imports: import copy
  import warnings
  import numpy
  import autogluon.core
  from ..estimators.base_estimator import BaseEstimator
  from ..estimators import SSDEstimator, FasterRCNNEstimator, YOLOv3Estimator, CenterNetEstimator
  from ..estimators import ImageClassificationEstimator
  from ..data.dataset import ObjectDetectionDataset
label_desc: Use image node_id 5 for calling the ConfigDict obj's underlying member method code with example usage: obj.__setitem__(key, value) without return types