  
  
  class TrainingDataGenerator():
      """ Generate training data for models """
      def __init__(self, model_input_size, model_output_size, training_opts, config):
          logger.debug("Initializing %s: (model_input_size: %s, model_output_shape: %s, "
                       "training_opts: %s, landmarks: %s, config: %s)",
                       self.__class__.__name__, model_input_size, model_output_size,
                       {key: val for key, val in training_opts.items() if key != "landmarks"},
                       bool(training_opts.get("landmarks", None)), config)
          self.batchsize = 0
 
</s> remove                      self.__class__.__name__, model_input_size, model_output_size,
 </s> add                      self.__class__.__name__, model_input_size, model_output_shapes, </s> remove         self.model_output_size = model_output_size
 </s> add         self.model_output_shapes = model_output_shapes </s> remove             output_size: Size of the face that comes out of the modell
 </s> add             output_shapes: Shapes that come out of the model </s> remove     def __init__(self, input_size, output_size, coverage_ratio, config):
 </s> add     def __init__(self, input_size, output_shapes, coverage_ratio, config): </s> remove         logger.debug("Initializing %s: (input_size: %s, output_size: %s, coverage_ratio: %s, "
                     "config: %s)", self.__class__.__name__, input_size, output_size,
 </s> add         logger.debug("Initializing %s: (input_size: %s, output_shapes: %s, coverage_ratio: %s, "
                     "config: %s)", self.__class__.__name__, input_size, output_shapes,
    def __init__(self, model_input_size, model_output_shapes, training_opts, config):
        logger.debug("Initializing %s: (model_input_size: %s, model_output_shapes: %s, "
  
  
  class TrainingDataGenerator():
      """ Generate training data for models """
    def __init__(self, model_input_size, model_output_shapes, training_opts, config):
        logger.debug("Initializing %s: (model_input_size: %s, model_output_shapes: %s, "
    def __init__(self, model_input_size, model_output_shapes, training_opts, config):
        logger.debug("Initializing %s: (model_input_size: %s, model_output_shapes: %s, "
                       "training_opts: %s, landmarks: %s, config: %s)",
                       self.__class__.__name__, model_input_size, model_output_size,
                       {key: val for key, val in training_opts.items() if key != "landmarks"},
                       bool(training_opts.get("landmarks", None)), config)
          self.batchsize = 0
keep keep keep keep replace 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