code: def set_input(self, data, device):
      self.input = Batch(pos=data.pos, x=data.x, batch=data.batch).to(
          device
      )
      if hasattr(data, "pos_target"):
          self.input_target = Batch(
              pos=data.pos_target,
              x=data.x_target,
              batch=data.batch_target,
          ).to(device)
          self.match = data.pair_ind.to(torch.long).to(device)
          self.size_match = data.size_pair_ind.to(torch.long).to(device)
      else:
          self.match = data.pair_ind.to(torch.long).to(device)
          self.size_match = data.size_pair_ind.to(torch.long).to(device)
  
file_path: torch-points3d/torch_points3d/models/registration/spconv3d.py
imports: import torch
  from torch_points3d.models.registration.base import FragmentBaseModel
  from torch.nn import Sequential, Linear, LeakyReLU, Dropout
  from torch_geometric.data import Data, Batch
  from torch_points3d.core.common_modules import FastBatchNorm1d, Seq
  from torch_points3d.applications.sparseconv3d import SparseConv3d
label_desc: Use image node_id 2 for calling the SparseConv3D obj's underlying member method code with example usage: obj.set_input(data, device) without return types