code: def training_step(self, batch: Batch, batch_idx: int) -> Tensor:
      y_hat, y = self.common_step(batch)
      loss = F.cross_entropy(y_hat, y)
      self.train_acc(y_hat.softmax(dim=-1), y)
      self.log(
          "train_acc",
          self.train_acc,
          prog_bar=True,
          on_step=False,
          on_epoch=True,
      )
      return loss
  
imports: import os.path
  from typing import Dict, List, Tuple
  import pytorch_lightning
  import torch
  import torch.nn.functional
  from pytorch_lightning import LightningModule, Trainer
  from pytorch_lightning.callbacks import ModelCheckpoint
  from torch import Tensor
  from torchmetrics import Accuracy
  import torch_geometric.transforms
  from torch_geometric.data import Batch
  from torch_geometric.data.lightning import LightningNodeData
  from torch_geometric.datasets import OGB_MAG
  from torch_geometric.nn import Linear, SAGEConv, to_hetero
  from torch_geometric.typing import EdgeType, NodeType
label_desc: Use image node_id 4 for calling the RelationalGNN obj's underlying member method code with example usage: obj.training_step(batch, batch_idx) and returns: loss