docstr: Takes the output generated by the NN and upsamples it to the original data
  Arguments:
      batch -- processed batch
      conv_type -- Type of convolutio (DENSE, PARTIAL_DENSE, etc...)
      output -- output predicted by the model
docstr_tok: ["Takes","the","output","generated","by","the","NN","and","upsamples","it","to","the","original","data","Arguments",":","batch","--","processed","batch","conv_type","--","Type","of","convolutio","(","DENSE",",","PARTIAL_DENSE",",","etc","...",")","output","--","output","predicted","by","the","model"]
code: def predict_original_samples(self, batch, conv_type, output):
      """Takes the output generated by the NN and upsamples it to the original data
      Arguments:
          batch -- processed batch
          conv_type -- Type of convolutio (DENSE, PARTIAL_DENSE, etc...)
          output -- output predicted by the model
      """
      full_res_results = {}
      num_sample = BaseDataset.get_num_samples(batch, conv_type)
      if conv_type == "DENSE":
          output = output.reshape(
              num_sample, -1, output.shape[-1]
          )  # [B,N,L]
  
      setattr(batch, "_pred", output)
      for b in range(num_sample):
          sampleid = batch.sampleid[b]
          sample_raw_pos = (
              self.test_dataset[0]
              .get_raw(sampleid)
              .pos.to(output.device)
          )
          predicted = BaseDataset.get_sample(
              batch, "_pred", b, conv_type
          )
          origindid = BaseDataset.get_sample(
              batch, SaveOriginalPosId.KEY, b, conv_type
          )
          full_prediction = knn_interpolate(
              predicted, sample_raw_pos[origindid], sample_raw_pos, k=3
          )
          labels = full_prediction.max(1)[1].unsqueeze(-1)
          full_res_results[
              self.test_dataset[0].get_filename(sampleid)
          ] = np.hstack(
              (
                  sample_raw_pos.cpu().numpy(),
                  labels.cpu().numpy(),
              )
          )
      return full_res_results
  
imports: import torch
  import glob
  import os
  from torch_geometric.io import read_txt_array
  from torch_geometric.data.data import Data
  import torch_geometric.transforms
  from torch_geometric.nn import knn_interpolate
  import numpy
  import logging
  from torch_points3d.core.data_transform import SaveOriginalPosId
  from torch_points3d.utils import is_list
  from torch_points3d.datasets.base_dataset import BaseDataset
  from torch_points3d.metrics.shapenet_part_tracker import ShapenetPartTracker
  from torch_points3d.datasets.segmentation.shapenet import ShapeNet
label_desc: Use image node_id 3 for calling the ForwardShapenetDataset obj's underlying member method code with example usage: obj.predict_original_samples(batch, conv_type, output) and returns: full_res_results