code: def set_input(self, data, device):
      self.batch_idx = data.batch.squeeze()
      self.input = data
      if data.y is not None:
          self.labels = data.y.to(self.device)
      else:
          self.labels = None
  
file_path: torch-points3d/torch_points3d/models/segmentation/sparseconv3d.py
imports: import logging
  import torch.nn.functional
  import torch.nn
  import torchsparse
  import torch
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
  from torch_points3d.applications.sparseconv3d import SparseConv3d
  import torch_points3d.modules.SparseConv3d
  from torch_points3d.core.common_modules import FastBatchNorm1d, Seq
label_desc: Use image node_id 2 for calling the APIModel obj's underlying member method code with example usage: obj.set_input(data, device) without return types