                     "action": actioncommand,
                     "generate": generatecommand,
                     "consoleclear": consoleclear,
                     "refreshgraph": refreshgraph,
                     "smoothgraph": smoothgraph,
                     "updatepreview": updatepreview,
                     "analysis_folder": analysis_folder}
          logger.debug(tk_vars)
          return tk_vars
  
 
</s> remove     @property
    def lowest_loss(self):
        """ Return the lowest average loss per save iteration seen """
        return self.state["lowest_avg_loss"]
 </s> add         self._time_stats = None
        self._per_session_stats = None
        logger.debug("Initialized %s", self.__class__.__name__) </s> remove         return raw
 </s> add  </s> remove         session: int, optional
 </s> add         session_id: int, optional </s> remove     @property
    def _total_loss_keys(self):
        """ list: The loss keys for all sessions. """
        loss_keys = set(loss_key
                        for session in self.state["sessions"].values()
                        for loss_key in session["loss_names"])
        return list(loss_keys)
 </s> add         elif Session.is_training:
            logger.debug("Updating summary time stamps for training session")
                     "action": actioncommand,
                     "generate": generatecommand,
                     "consoleclear": consoleclear,
                     "refreshgraph": refreshgraph,

                     "updatepreview": updatepreview,
                     "analysis_folder": analysis_folder}
          logger.debug(tk_vars)
          return tk_vars
  
keep keep keep keep replace keep keep keep keep keep
 GUI - Stats optimization (#1067)

* Faster stat loading + caching

* Compress data in cache

* Optimize some calculations

* Vectorize smoothing

* stats.Calculations optimized

* Load latest training data from live iterator

* Add options to training graph 
lib/gui/utils.py