code: def forward(self, data, **kwargs):
      batch_obj = Batch()
      x, pos, batch = data.x, data.pos, data.batch
      x = self.nn(torch.cat([x, pos], dim=1))
      x = self.pool(x, batch)
      batch_obj.x = x
      batch_obj.pos = pos.new_zeros((x.size(0), 3))
      batch_obj.batch = torch.arange(x.size(0), device=x.device)
      copy_from_to(data, batch_obj)
      return batch_obj
  
imports: from typing import *
  import torch
  from torch.nn import Linear, ReLU, LeakyReLU, BatchNorm1d, Dropout
  from torch_geometric.nn import knn_interpolate, fps, radius, global_max_pool, global_mean_pool, knn
  from torch_geometric.data import Batch
  from torch_points3d.core.spatial_ops import *
  from .base_conv import BaseConvolution
  from torch_points3d.core.common_modules.base_modules import BaseModule
  from torch_points3d.core.common_modules import MLP
label_desc: Use image node_id 2 for calling the GlobalPartialDenseBaseModule obj's underlying member method code with example usage: obj.forward(data) and returns: batch_obj