          predicted = self.predictor(feed)
          predicted = predicted if isinstance(predicted, list) else [predicted]
          logger.trace("Output shape(s): %s", [predict.shape for predict in predicted])
  
          # Compile masks into alpha channel or keep raw faces
          predicted = np.concatenate(predicted, axis=-1) if len(predicted) == 2 else predicted[0]
          predicted = predicted.astype("float32")
  
 
</s> remove         logger.debug(output_names)
 </s> add         logger.debug("Overridden output_names: %s", output_names) </s> remove         if len(loss) < 2:
 </s> add         if len(loss) != 2 or not all(len(itm) == 3 for itm in loss): </s> remove             if loss_key.startswith("loss"):
 </s> add             if loss_key.startswith("total"): </s> remove         dst_points = np.mgrid[dst_slice, dst_slice]
        mat = umeyama(src_points, True, dst_points.T.reshape(-1, 2))[0:2]
        target_image = cv2.warpAffine(  # pylint:disable=no-member
            image, mat, (self.output_size, self.output_size))
        logger.trace("Target image shape: %s", target_image.shape)

        warped_image, warped_mask = self.separate_mask(warped_image)
        target_image, target_mask = self.separate_mask(target_image)
 </s> add         dst_points = [np.mgrid[dst_slice, dst_slice] for dst_slice in dst_slices]
        mats = [umeyama(src_points, True, dst_pts.T.reshape(-1, 2))[0:2]
                for dst_pts in dst_points]
        predicted = self.filter_multi_out(predicted)

          predicted = self.predictor(feed)
          predicted = predicted if isinstance(predicted, list) else [predicted]
          logger.trace("Output shape(s): %s", [predict.shape for predict in predicted])
  
        predicted = self.filter_multi_out(predicted)

          # Compile masks into alpha channel or keep raw faces
          predicted = np.concatenate(predicted, axis=-1) if len(predicted) == 2 else predicted[0]
          predicted = predicted.astype("float32")
  
keep keep keep add keep keep keep keep
 Training: Add Multi-Output Support

- Name output nodes of models
- Add support for multiple outputs in models and in training
- Update loss output format for cli and gui
- Sort graphs tabs on training
- Fix analysis graph for new loss names
- Multi output support in convert 
scripts/convert.py