code: def copy(self, **kwargs):
          
          copy_obj = copy.deepcopy(self)
          for name, value in kwargs.items():
              object.__setattr__(copy_obj, name, value)
          return copy_obj
docs: Create a copy of the config object, optionally modifying some of the attributes.
          For example `nn_config.copy(num_hidden=512)` will create a copy of `nn_config` where the attribute `num_hidden`
          will be set to the new value of num_hidden.
  
          :param kwargs:
          :return: A deep copy of the config object.