              A function that defines a :class:`keras.Model` and returns it's ``inputs`` and
              ``outputs``. The function that generates these results should be passed in, NOT the
              results themselves, as the function needs to be executed within the correct context.
          """
          self._model = Model(*function())
  
      def load_model_weights(self) -> None:
          """ Load model weights for a defined model inside the correct session.
  
          This method is a wrapper for :class:`keras.load_weights()`. Once a model has been defined
 
</s> remove         self._model = k_load_model(self._model_path, compile=False, **self._model_kwargs)
        if self._backend != "amd":
            self._model.make_predict_function()
 </s> add         with self._context:
            self._model = k_load_model(self._model_path, compile=False, **self._model_kwargs)
            if self._backend != "amd":
                self._model.make_predict_function() </s> remove         self._model.load_weights(self._model_path)
        if self._backend != "amd":
            self._model.make_predict_function()
 </s> add         with self._context:
            self._model.load_weights(self._model_path)
            if self._backend != "amd":
                self._model.make_predict_function() </s> remove     """ Keras P-Net model for MTCNN """
    def __init__(self, model_path, allow_growth, exclude_gpus):
 </s> add     """ Keras P-Net model for MTCNN

    Parameters
    ----------
    model_path: str
        The path to the keras model file
    allow_growth: bool, optional
        Enable the Tensorflow GPU allow_growth configuration option. This option prevents
        Tensorflow from allocating all of the GPU VRAM, but can lead to higher fragmentation and
        slower performance. Default: ``False``
    exclude_gpus: list, optional
        A list of indices correlating to connected GPUs that Tensorflow should not use. Pass
        ``None`` to not exclude any GPUs. Default: ``None``
    cpu_mode: bool, optional
        ``True`` run the model on CPU. Default: ``False``
    input_size: int
        The input size of the model
    minsize: int, optional
        The minimum size of a face to accept as a detection. Default: `20`
    threshold: list, optional
        Threshold for P-Net
    """
    def __init__(self,
                 model_path: str,
                 allow_growth: bool,
                 exclude_gpus: List[int],
                 cpu_mode: bool,
                 input_size: int,
                 min_size: int,
                 factor: float,
                 threshold: float) -> None: </s> remove     """ Keras R-Net model for MTCNN """
    def __init__(self, model_path, allow_growth, exclude_gpus):
 </s> add     """ Keras R-Net model Definition for MTCNN

    Parameters
    ----------
    model_path: str
        The path to the keras model file
    allow_growth: bool, optional
        Enable the Tensorflow GPU allow_growth configuration option. This option prevents
        Tensorflow from allocating all of the GPU VRAM, but can lead to higher fragmentation and
        slower performance. Default: ``False``
    exclude_gpus: list, optional
        A list of indices correlating to connected GPUs that Tensorflow should not use. Pass
        ``None`` to not exclude any GPUs. Default: ``None``
    cpu_mode: bool, optional
        ``True`` run the model on CPU. Default: ``False``
    input_size: int
        The input size of the model
    threshold: list, optional
        Threshold for R-Net

    """
    def __init__(self,
                 model_path: str,
                 allow_growth: bool,
                 exclude_gpus: List[int],
                 cpu_mode: bool,
                 input_size: int,
                 threshold: float) -> None:
        with self._context:
            self._model = Model(*function())
              A function that defines a :class:`keras.Model` and returns it's ``inputs`` and
              ``outputs``. The function that generates these results should be passed in, NOT the
              results themselves, as the function needs to be executed within the correct context.
          """
        with self._context:
            self._model = Model(*function())
  
      def load_model_weights(self) -> None:
          """ Load model weights for a defined model inside the correct session.
  
          This method is a wrapper for :class:`keras.load_weights()`. Once a model has been defined
keep keep keep keep replace keep keep keep keep keep
 Add CPU option to BiSeNet and MTCNN
  - Add CPU option to KSession
  - MTCNN optimizations
  - Update docs for bisenet + mtcnn 
lib/model/session.py