docstr: Unpack input data from the dataloader and perform necessary pre-processing steps.
  Parameters:
      input: a dictionary that contains the data itself and its metadata information.
  Sets:
      self.input:
          x -- Features [B, C, N]
          pos -- Points [B, N, 3]
docstr_tok: ["Unpack","input","data","from","the","dataloader","and","perform","necessary","pre-processing","steps",".","Parameters",":","input",":","a","dictionary","that","contains","the","data","itself","and","its","metadata","information",".","Sets",":","self.input",":","x","--","Features","[","B",",","C",",","N","]","pos","--","Points","[","B",",","N",",","3","]"]
code: def _set_input(self, data):
      """Unpack input data from the dataloader and perform necessary pre-processing steps.
      Parameters:
          input: a dictionary that contains the data itself and its metadata information.
      Sets:
          self.input:
              x -- Features [B, C, N]
              pos -- Points [B, N, 3]
      """
      assert len(data.pos.shape) == 3
      data = data.to(self.device)
      if data.x is not None:
          data.x = data.x.transpose(1, 2).contiguous()
      else:
          data.x = None
      self.input = data
  
imports: import os
  import sys
  import queue
  from omegaconf import DictConfig, OmegaConf
  import logging
  from torch_points3d.applications.modelfactory import ModelFactory
  from torch_points3d.modules.RSConv import *
  from torch_points3d.core.base_conv.dense import DenseFPModule
  from torch_points3d.models.base_architectures.unet import UnwrappedUnetBasedModel
  from torch_points3d.datasets.multiscale_data import MultiScaleBatch
  from torch_points3d.core.common_modules.dense_modules import Conv1D
  from torch_points3d.core.common_modules.base_modules import Seq
  from .utils import extract_output_nc
label_desc: Use image node_id 4 for calling the RSConvBase obj's underlying member method code with example usage: obj._set_input(data) without return types