code: def training_step(self, batch, batch_idx):
      mixture, clean = batch
      estimate = self.model(mixture)
      loss_cisdr = ci_sdr.pt.ci_sdr_loss(
          estimate, clean, compute_permutation=False, filter_length=512
      ).mean()
      loss_stoi = self.loss_stoi(estimate, clean).mean()
      loss = loss_cisdr + loss_stoi * 10
      self.log("train/loss_cisdr", loss_cisdr.item())
      self.log("train/loss_stoi", loss_stoi.item())
      self.log("train/loss", loss.item())
      return loss
  
file_path: audio/examples/dnn_beamformer/model.py
imports: import ci_sdr
  import lightning.pytorch
  import torch
  from asteroid.losses.stoi import NegSTOILoss
  from asteroid.masknn import TDConvNet
  from torchaudio.transforms import InverseSpectrogram, PSD, SoudenMVDR, Spectrogram
label_desc: Use image node_id 2 for calling the DNNBeamformerLightningModule obj's underlying member method code with example usage: obj.training_step(batch, batch_idx) and returns: loss