code: def si_sdr_loss(
      estimate: torch.Tensor,
      reference: torch.Tensor,
      mask: torch.Tensor,
  ) -> torch.Tensor:
      """Compute the Si-SDR loss.
  
      Args:
          estimate (torch.Tensor): Estimated source signals.
              Tensor of dimension (batch, speakers, time)
          reference (torch.Tensor): Reference (original) source signals.
              Tensor of dimension (batch, speakers, time)
          mask (torch.Tensor): Mask to indicate padded value (0) or valid value (1).
              Tensor of dimension (batch, 1, time)
  
      Returns:
          torch.Tensor: Si-SDR loss. Tensor of dimension (batch, )
      """
      estimate = estimate - estimate.mean(axis=2, keepdim=True)
      reference = reference - reference.mean(axis=2, keepdim=True)
  
      si_sdri = metrics.sdr_pit(estimate, reference, mask=mask)
      return -si_sdri.mean()
  
imports: from argparse import ArgumentParser
  from pathlib import Path
  from typing import Any, Callable, Dict, List, Mapping, Optional, Tuple, TypedDict, Union
  import torch
  import torchaudio
  from pytorch_lightning import LightningModule, Trainer
  from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint
  from torch import nn
  from torch.optim.lr_scheduler import _LRScheduler
  from torch.utils.data import DataLoader
  from utils import metrics
  from utils.dataset import utils
label_desc: Use image node_id 3 for calling a global function with example usage: si_sdr_loss(estimate, reference, mask) and returns: unknown