                       {key: val for key, val in training_opts.items() if key != "landmarks"},
                       bool(training_opts.get("landmarks", None)), config)
          self.batchsize = 0
          self.model_input_size = model_input_size
          self.model_output_size = model_output_size
          self.training_opts = training_opts
          self.mask_class = self.set_mask_class()
          self.landmarks = self.training_opts.get("landmarks", None)
          self.fixed_producer_dispatcher = None  # Set by FPD when loading
          self._nearest_landmarks = None
 
</s> remove                      self.__class__.__name__, model_input_size, model_output_size,
 </s> add                      self.__class__.__name__, model_input_size, model_output_shapes, </s> remove                                             model_output_size,
 </s> add                                             model_output_shapes, </s> remove     def __init__(self, model_input_size, model_output_size, training_opts, config):
        logger.debug("Initializing %s: (model_input_size: %s, model_output_shape: %s, "
 </s> add     def __init__(self, model_input_size, model_output_shapes, training_opts, config):
        logger.debug("Initializing %s: (model_input_size: %s, model_output_shapes: %s, " </s> remove 
        # Get the returned image from predictors that emit multiple items
 </s> add         # Get the returned largest image from predictors that emit multiple items </s> remove                 preds[key] = val[0]
 </s> add                 preds[key] = val[self.model.largest_face_index]
        self.model_output_shapes = model_output_shapes
                       {key: val for key, val in training_opts.items() if key != "landmarks"},
                       bool(training_opts.get("landmarks", None)), config)
          self.batchsize = 0
          self.model_input_size = model_input_size
        self.model_output_shapes = model_output_shapes
          self.training_opts = training_opts
          self.mask_class = self.set_mask_class()
          self.landmarks = self.training_opts.get("landmarks", None)
          self.fixed_producer_dispatcher = None  # Set by FPD when loading
          self._nearest_landmarks = None
keep keep keep keep replace keep 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 
lib/training_data.py