docstr: Run forward pass. This will be called by both functions <optimize_parameters> and <test>.
docstr_tok: ["Run","forward","pass",".","This","will","be","called","by","both","functions","<","optimize_parameters",">","and","<","test",">","."]
code: def forward(self, **kwargs):
      """Run forward pass. This will be called by both functions <optimize_parameters> and <test>."""
      data_features = self.backbone_model.forward(self.input)
      if self.dropout:
          data_features.x = self.dropout(data_features.x)
      data_seeds, seed_inds = self._select_seeds(data_features)
  
      # Semantic prediction only if full Unet
      self.semantic_logits = None
      if self.Semantic:
          backbone_feats = data_features.x.clone()
          if backbone_feats.dim() == 3:
              backbone_feats = backbone_feats.transpose(2, 1)
              backbone_feats = backbone_feats.reshape(
                  -1, backbone_feats.shape[2]
              )
          if backbone_feats.shape[0] == self.semantic_labels.shape[0]:
              self.semantic_logits = self.Semantic(backbone_feats)
  
      # Box prediction
      data_votes = self.voting_module(data_seeds)
      setattr(data_votes, "seed_inds", seed_inds)  # [B,num_seeds]
  
      outputs: votenet_module.VoteNetResults = self.proposal_cls_module(
          data_votes.to(self.device)
      )
  
      # Set output and compute losses
      self.input = self.input.to(self.device)
      self.output = outputs
      if hasattr(self.input, "center_label"):
          self._extract_gt_center(self.input, outputs)
      with torch.no_grad():
          self._dump_visuals()
  
imports: import torch
  from torch_geometric.data import Data
  import os
  from torch_points3d.datasets.object_detection.box_data import BoxData
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.applications import models
  import torch_points3d.modules.VoteNet
  from torch_points3d.core.common_modules import Seq, MLP, FastBatchNorm1d
  from torch_points3d.core.data_transform import AddOnes
  from torch_points3d.modules.VoteNet.dense_samplers import RandomSamplerToDense, FPSSamplerToDense
label_desc: Use image node_id 3 for calling the VoteNet2 obj's underlying member method code with example usage: obj.forward() without return types