code: def training_step(self, batch, batch_idx):
      # training_step defines the train loop.
      # it is independent of forward
      x, y = batch
      x = x.view(x.size(0), -1)
      z = self.encoder(x)
      x_hat = self.decoder(z)
      loss = nn.functional.mse_loss(x_hat, x)
      # Logging to TensorBoard (if installed) by default
      self.log("train_loss", loss)
      return loss
  
file_path: aim/examples/pytorch_lightning_track.py
imports: import os
  import lightning.pytorch
  from aim.pytorch_lightning import AimLogger
  from torch import nn, optim, utils
  from torchvision.datasets import MNIST
  from torchvision.transforms import ToTensor
label_desc: Use image node_id 2 for calling the LitAutoEncoder obj's underlying member method code with example usage: obj.training_step(batch, batch_idx) and returns: loss