                         self._model.iterations - 1 >= snapshot_interval and
                         (self._model.iterations - 1) % snapshot_interval == 0)
  
          model_inputs, model_targets = self._feeder.get_batch()
          if get_backend() == "amd":  # Expand out AMD inputs + targets
              model_inputs = [inp for side in model_inputs for inp in side]  # type: ignore
              model_targets = [tgt for side in model_targets for tgt in side]  # type: ignore
  
          try:
              loss: List[float] = self._model.model.train_on_batch(model_inputs, y=model_targets)
          except tf_errors.ResourceExhaustedError as err:
              msg = ("You do not have enough GPU memory available to train the selected model at "
 
</s> remove             loss: List[float] = self._model.model.train_on_batch(model_inputs, y=model_targets)
 </s> add             loss: T.List[float] = self._model.model.train_on_batch(model_inputs, y=model_targets) </s> remove         except Exception as err:
            if get_backend() == "amd":
                # pylint:disable=import-outside-toplevel
                from lib.plaidml_utils import is_plaidml_error
                if (is_plaidml_error(err) and (
                        "CL_MEM_OBJECT_ALLOCATION_FAILURE" in str(err).upper() or
                        "enough memory for the current schedule" in str(err).lower())):
                    msg = ("You do not have enough GPU memory available to train the selected "
                           "model at the selected settings. You can try a number of things:"
                           "\n1) Close any other application that is using your GPU (web browsers "
                           "are particularly bad for this)."
                           "\n2) Lower the batchsize (the amount of images fed into the model "
                           "each iteration)."
                           "\n3) Use a more lightweight model, or select the model's 'LowMem' "
                           "option (in config) if it has one.")
                    raise FaceswapError(msg) from err
            raise
 </s> add  </s> remove         model_inputs: List[List[np.ndarray]] = []
        model_targets: List[List[np.ndarray]] = []
 </s> add         model_inputs: T.List[T.List[np.ndarray]] = []
        model_targets: T.List[T.List[np.ndarray]] = [] </s> remove         except Exception as err:
            if get_backend() == "amd":
                # pylint:disable=import-outside-toplevel
                from lib.plaidml_utils import is_plaidml_error
                if (is_plaidml_error(err) and (
                        "CL_MEM_OBJECT_ALLOCATION_FAILURE" in str(err).upper() or
                        "enough memory for the current schedule" in str(err).lower())):
                    msg = ("You do not have enough GPU memory available to run detection at "
                           "the selected batch size. You can try a number of things:"
                           "\n1) Close any other application that is using your GPU (web "
                           "browsers are particularly bad for this)."
                           "\n2) Lower the batchsize (the amount of images fed into the "
                           "model) by editing the plugin settings (GUI: Settings > Configure "
                           "extract settings, CLI: Edit the file "
                           "faceswap/config/extract.ini).")
                    raise FaceswapError(msg) from err
            raise
 </s> add  </s> remove         if self._model.config["learn_mask"] and get_backend() == "amd":
            # Ravel results for plaidml
            split = len(standard) // 2
            standard = [standard[:split], standard[split:]]
            swapped = [swapped[:split], swapped[split:]]

 </s> add 
                         self._model.iterations - 1 >= snapshot_interval and
                         (self._model.iterations - 1) % snapshot_interval == 0)
  
          model_inputs, model_targets = self._feeder.get_batch()



  
          try:
              loss: List[float] = self._model.model.train_on_batch(model_inputs, y=model_targets)
          except tf_errors.ResourceExhaustedError as err:
              msg = ("You do not have enough GPU memory available to train the selected model at "
keep keep keep keep replace replace replace keep keep keep keep keep
 Remove plaidML support (#1325)

* Remove PlaidML reference from readme files

* Remove AMD option from installers

* remove amd requirements and update setup.py

* remove plaidml test from CI workflow

* gpustats: remove plaidml backend

* plaid removals:
  - faceswap.py - python version check
  - setup.cfg - plaidml typing ignore
  - lib.keras_utils - All plaid code
  - lib.launcher.py - All plaidml checks and configuration

* remove tf2.2 specific code from GUI event reader

* lib.model - remove all plaidml implementations

* plugins.extract - remove plaidml code

* plugins.train remove plaidml code

* lib.convert - remove plaidml code

* tools.model: remove plaidml code

* Remove plaidML tests from unit tests

* remove plaidml_utils and docsting cleanups

* Remove plaidML refs from configs

* fix keras imports 
plugins/train/trainer/_base.py