docstr: Run forward pass. This will be called by both functions <optimize_parameters> and <test>.
code: def forward(self, *args, **kwargs) -> Any:
      """Run forward pass. This will be called by both functions <optimize_parameters> and <test>."""
      data = self.model(self.input)
      x = F.relu(self.lin1(data.x))
      x = F.dropout(x, p=self.dropout, training=bool(self.training))
      x = self.lin2(x)
      x = F.dropout(x, p=self.dropout, training=bool(self.training))
      x = self.lin3(x)
      self.output = F.log_softmax(x, dim=-1)
  
      if self.labels is not None:
          self.loss_seg = (
              F.nll_loss(
                  self.output, self.labels, ignore_index=IGNORE_LABEL
              )
              + self.get_internal_loss()
          )
  
      self.data_visual = self.input
      self.data_visual.y = self.labels
      self.data_visual.pred = torch.max(self.output, -1)[1]
      return self.output
  
file_path: torch-points3d/torch_points3d/models/segmentation/base.py
imports: import logging
  import torch
  import torch.nn.functional
  from typing import Any
  from torch_points3d.models.base_architectures import UnetBasedModel
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
label_desc: Use image node_id 3 for calling the Segmentation_MP obj's underlying member method code with example usage: obj.forward() and returns: self