code: def _compute_losses(self):
      if self._weight_classes is not None:
          self._weight_classes = self._weight_classes.to(self.device)
      losses = votenet_module.get_loss(
          self.input,
          self.output,
          self.loss_params,
          weight_classes=self._weight_classes,
      )
      for loss_name, loss in losses.items():
          if torch.is_tensor(loss):
              if not self.losses_has_been_added:
                  self.loss_names += [loss_name]
              setattr(self, loss_name, loss)
  
      if self.semantic_logits is not None:
          if not self.losses_has_been_added:
              self.loss_names += ["semantic_loss"]
          self.semantic_loss = torch.nn.functional.nll_loss(
              self.semantic_logits,
              self.semantic_labels,
              ignore_index=IGNORE_LABEL,
          )
          self.loss += 10 * self.semantic_loss
      self.losses_has_been_added = True
  
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 7 for calling the VoteNet2 obj's underlying member method code with example usage: obj._compute_losses() without return types