code: def forward(self, *args, **kwargs):
      logits, _ = self.apply_nn(self.input)
      self.output = F.log_softmax(logits, dim=-1)
      if self.labels is not None:
          self.loss_seg = F.nll_loss(
              self.output, self.labels, ignore_index=IGNORE_LABEL
          )
  
file_path: torch-points3d/torch_points3d/models/segmentation/ms_svconv3d.py
imports: import logging
  import torch
  import torch.nn.functional
  import torch.nn
  import torchsparse
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
  from torch_points3d.applications.sparseconv3d import SparseConv3d
  from torch_points3d.core.common_modules import FastBatchNorm1d, Seq
  from torch_points3d.models.registration.ms_svconv3d import UnetMSparseConv3d
  from torch_points3d.models.segmentation.sparseconv3d import APIModel
label_desc: Use image node_id 3 for calling the MS_SparseConvModel obj's underlying member method code with example usage: obj.forward() without return types