code: def forward(self, *args, **kwargs):
      x = self.pointnet_seg.forward_embedding(self.pos, self.batch_idx)
      x = self.seg_nn(x)
      self.output = F.log_softmax(x, dim=-1)
      self.loss = F.nll_loss(self.output, self.labels)
      return self.output
  
imports: import torch.nn.functional
  import logging
  from omegaconf import OmegaConf
  from torch_points3d.core.base_conv.base_conv import *
  from torch_points3d.core.common_modules.base_modules import *
  from torch_points3d.utils.config import ConvolutionFormatFactory
  from torch_points3d.modules.PointNet import *
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.utils.model_building_utils.resolver_utils import flatten_dict
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
label_desc: Use image node_id 4 for calling the SegPointNetModel obj's underlying member method code with example usage: obj.forward() and returns: self