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)
      self.losses_has_been_added = True
  
file_path: torch-points3d/torch_points3d/models/object_detection/votenet.py
imports: import logging
  import numpy
  import torch
  import os
  from torch_geometric.data import Data
  from torch_points3d.datasets.object_detection.box_data import BoxData
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.applications import models
  import torch_points3d.modules.VoteNet
  from torch_points3d.models.base_architectures import UnetBasedModel
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
label_desc: Use image node_id 4 for calling the VoteNetModel obj's underlying member method code with example usage: obj._compute_losses() without return types