docstr: Parameters:
  -----------
  data
      A SparseTensor that contains the data itself and its metadata information. Should contain
          F -- Features [N, C]
          coords -- Coords [N, 4]
  
  Returns
  --------
  data:
      - x [1, output_nc]
docstr_tok: ["Parameters",":","--","--","--","--","--","-","data","A","SparseTensor","that","contains","the","data","itself","and","its","metadata","information",".","Should","contain","F","--","Features","[","N",",","C","]","coords","--","Coords","[","N",",","4","]","Returns","--","--","--","--","data",":","-","x","[","1",",","output_nc","]"]
code: def forward(self, data, *args, **kwargs):
      """
      Parameters:
      -----------
      data
          A SparseTensor that contains the data itself and its metadata information. Should contain
              F -- Features [N, C]
              coords -- Coords [N, 4]
  
      Returns
      --------
      data:
          - x [1, output_nc]
  
      """
      self._set_input(data)
      data = self.input
      for i in range(len(self.down_modules)):
          data = self.down_modules[i](data)
  
      out = Batch(x=data.F, batch=data.C[:, 0].long().to(data.F.device))
      if not isinstance(self.inner_modules[0], Identity):
          out = self.inner_modules[0](out)
  
      if self.has_mlp_head:
          out.x = self.mlp(out.x)
      return out
  
imports: import os
  import sys
  from omegaconf import DictConfig, OmegaConf
  import logging
  import torch
  from torch_geometric.data import Batch
  from torch_points3d.applications.modelfactory import ModelFactory
  import torch_points3d.modules.SparseConv3d
  from torch_points3d.core.base_conv.message_passing import *
  from torch_points3d.modules.SparseConv3d.modules import *
  from torch_points3d.core.base_conv.partial_dense import *
  from torch_points3d.models.base_architectures.unet import UnwrappedUnetBasedModel
  from torch_points3d.core.common_modules.base_modules import MLP
  from .utils import extract_output_nc
label_desc: Use image node_id 1 for calling the SparseConv3dEncoder obj's underlying member method code with example usage: obj.forward(data) and returns: out