title: Does the PyTorch Lightning average metrics over the whole epoch?
body: <p>I am looking at the example provided on <code>PyTorch-Lightning</code> official documentation <a href="https://pytorch-lightning.readthedocs.io/en/0.9.0/lightning-module.html" rel="nofollow noreferrer">https://pytorch-lightning.readthedocs.io/en/0.9.0/lightning-module.html</a>.</p>
  <p>Here the loss and metric is calculated on the concrete batch. But when logging one is not interested in the accuracy for a particular batch, which can be rather small and not representative, but the averaged over all epoch. Do I understand correctly, that there is some code performing the averaging over all batches, passed through the epoch?</p>
  <pre><code> import pytorch_lightning as pl
   from pytorch_lightning.metrics import functional as FM
  
   class ClassificationTask(pl.LightningModule):
  
   def __init__(self, model):
       super().__init__()
       self.model = model
  
   def training_step(self, batch, batch_idx):
       x, y = batch
       y_hat = self.model(x)
       loss = F.cross_entropy(y_hat, y)
       return pl.TrainResult(loss)
  
   def validation_step(self, batch, batch_idx):
      x, y = batch
      y_hat = self.model(x)
      loss = F.cross_entropy(y_hat, y)
      acc = FM.accuracy(y_hat, y)
      result = pl.EvalResult(checkpoint_on=loss)
      result.log_dict({'val_acc': acc, 'val_loss': loss})
      return result
  
   def test_step(self, batch, batch_idx):
      result = self.validation_step(batch, batch_idx)
      result.rename_keys({'val_acc': 'test_acc', 'val_loss': 'test_loss'})
      return result
  
   def configure_optimizers(self):
       return torch.optim.Adam(self.model.parameters(), lr=0.02)
  </code></pre>