question: Interpret the output (logs) during training
context: This is my training and validation steps  
   def training_step(self,batch,batch_idx):
      self.log('train/loss', loss, on_epoch=True,prog_bar=True)
      self.log('train/iou', iou, on_epoch=True,prog_bar=True)
      return loss  
  
  def validation_step(self,batch,batch_idx):
      self.log('val/loss', loss, on_epoch=True,prog_bar=True)
      self.log('val/iou', iou, on_epoch=True,prog_bar=True)
      return loss
  
  
  This is what logs displayed
  360/361 [16:07<00:02, 2.69s/it, loss=0.148, v_num=0, val/loss=0.664, val/iou=0.234, train/loss_step=0.129, train/iou_step=0.379, train/loss_epoch=0.210, train/iou_epoch=0.371]
  
  I am confused what is the difference between loss and val/loss? If there is val/loss which makes sense as I output it, then what is loss. There is val/iou, but there is not any train/iou, and train/loss as in val case. why? Is train/iou_epoch is for epoch or for all previous epochs?
answer: Hey @talhaanwarch,
  Lightning automatically takes your training_step output and applies a running mean on it and add it to the progress bar using the key loss.
  As you may see, there is train/iou_step=0.379 and train/loss_epoch=0.210.
  Here is why:
  For training, Lightning logs automatically set on_step=True and you provided on_epoch=True. Therefore, to prevent values to be logged under the same key, Lightning adds a _step and _epoch suffix to differentiate them.
  _epoch is used to describe the value compute on the previous epoch, until the new reduction is performed. If you use a logger, you will clearly see the _epoch value logged at the right epoch.
  Best,
  T.C