              self.wrapper.tk_vars["refreshgraph"].set(True)
          self.train_stats["iterations"] = iterations
  
          elapsed = self.calc_elapsed()
          message = "Elapsed: {}  Iteration: {}  {}".format(elapsed,
                                                            self.train_stats["iterations"], message)
          self.statusbar.progress_update(message, 0, False)
          logger.trace("Succesfully captured loss: %s", message)
          return True
  
      def calc_elapsed(self):
 
</s> remove         message = ""
        for item in loss:
            message += "{}: {}  ".format(item[0], item[1])
 </s> add         message = "Total Iterations: {} | ".format(int(loss[0][0]))
        message += "  ".join(["{}: {}".format(itm[1], itm[2]) for itm in loss]) </s> remove         if len(loss) < 2:
 </s> add         if len(loss) != 2 or not all(len(itm) == 3 for itm in loss): </s> remove         logger.debug("Compiled Predictors. Losses: %s", loss_names)
 </s> add         logger.debug("Compiled Predictors. Losses: %s", loss.names) </s> remove             "loss": re.compile(r"([a-zA-Z_]+):.*?(\d+\.\d+)"),
 </s> add             "loss": re.compile(r"[\W]+(\d+)?[\W]+([a-zA-Z\s]*)[\W]+?(\d+\.\d+)"),
        message = "Elapsed: {} | Session Iterations: {}  {}".format(
            elapsed,
            self.train_stats["iterations"], message)
              self.wrapper.tk_vars["refreshgraph"].set(True)
          self.train_stats["iterations"] = iterations
  
          elapsed = self.calc_elapsed()
        message = "Elapsed: {} | Session Iterations: {}  {}".format(
            elapsed,
            self.train_stats["iterations"], message)
        message = "Elapsed: {} | Session Iterations: {}  {}".format(
            elapsed,
            self.train_stats["iterations"], message)
          self.statusbar.progress_update(message, 0, False)
          logger.trace("Succesfully captured loss: %s", message)
          return True
  
      def calc_elapsed(self):
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/gui/wrapper.py