      def print_loss(self, loss):
          """ Override for specific model loss formatting """
          logger.trace(loss)
          output = ["Loss {}: {:.5f}".format(side.capitalize(), loss[side][0])
                    for side in sorted(list(loss.keys()))]
          output = ", ".join(output)
          print("[{}] [#{:05d}] {}".format(self.timestamp, self.model.iterations, output), end='\r')
  
      def train_one_step(self, viewer, timelapse_kwargs):
          """ Train a batch """
 
</s> remove         self.loss = {side: dict() for side in sides}
 </s> add         self.loss = {side: [0] for side in sides}
                  for side in sorted(loss.keys())]
      def print_loss(self, loss):
          """ Override for specific model loss formatting """
          logger.trace(loss)
          output = ["Loss {}: {:.5f}".format(side.capitalize(), loss[side][0])
                  for side in sorted(loss.keys())]
          output = ", ".join(output)
          print("[{}] [#{:05d}] {}".format(self.timestamp, self.model.iterations, output), end='\r')
  
      def train_one_step(self, viewer, timelapse_kwargs):
          """ Train a batch """
keep keep keep keep replace keep keep keep keep keep
 Bugfixes: PingPong Training

Print loss correctly for PingPong Training
Don't load Analysis stats for PingPong Training 
plugins/train/trainer/_base.py