Interpret the output (logs) during training
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?
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