docstr: Populates scores for the points in data
  
  Parameters
  ----------
  data : Data
      should contain `pos` and `SaveOriginalPosId.KEY` keys
  output : torch.Tensor
      probablities out of the model, shape: [N,nb_classes]
docstr_tok: ["Populates","scores","for","the","points","in","data","Parameters","--","--","--","--","--","data",":","Data","should","contain","`","pos","`","and","`","SaveOriginalPosId.KEY","`","keys","output",":","torch.Tensor","probablities","out","of","the","model",",","shape",":","[","N",",","nb_classes","]"]
code: def _vote(self, data, output):
      """Populates scores for the points in data
  
      Parameters
      ----------
      data : Data
          should contain `pos` and `SaveOriginalPosId.KEY` keys
      output : torch.Tensor
          probablities out of the model, shape: [N,nb_classes]
      """
      id_scans = data.id_scan
      if id_scans.dim() > 1:
          id_scans = id_scans.squeeze()
      if self._conv_type == "DENSE":
          batch_size = len(id_scans)
          output = output.view(batch_size, -1, output.shape[-1])
  
      for idx_batch, id_scan in enumerate(id_scans):
          # First time we see this scan
          if id_scan not in self._raw_datas:
              raw_data = self._dataset.get_raw_data(
                  self._stage, id_scan, remap_labels=True
              )
              self._raw_datas[id_scan] = raw_data
              self._vote_counts[id_scan] = torch.zeros(
                  raw_data.pos.shape[0], dtype=torch.int
              )
              self._votes[id_scan] = torch.zeros(
                  (raw_data.pos.shape[0], self._num_classes),
                  dtype=torch.float,
              )
          else:
              raw_data = self._raw_datas[id_scan]
  
          batch_mask = idx_batch
          if self._conv_type != "DENSE":
              batch_mask = data.batch == idx_batch
          idx = data[SaveOriginalPosId.KEY][batch_mask]
  
          self._votes[id_scan][idx] += output[batch_mask].cpu()
          self._vote_counts[id_scan][idx] += 1
  
file_path: torch-points3d/torch_points3d/metrics/scannet_segmentation_tracker.py
imports: import os.path
  from typing import Dict, Any
  import logging
  import numpy
  import torch
  from torch_geometric.nn.unpool import knn_interpolate
  from torch_points3d.metrics.confusion_matrix import ConfusionMatrix
  from torch_points3d.metrics.segmentation_tracker import SegmentationTracker
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
  from torch_points3d.core.data_transform import SaveOriginalPosId
  from torch_points3d.models import model_interface
label_desc: Use image node_id 6 for calling the ScannetSegmentationTracker obj's underlying member method code with example usage: obj._vote(data, output) without return types