code: def __init__(
      self,
      nn,
      aggr="max",
      bn=True,
      activation=torch.nn.LeakyReLU(negative_slope=0.01),
      **kwargs,
  ):
      super(GlobalDenseBaseModule, self).__init__()
      self.nn = MLP2D(nn, bn=bn, activation=activation, bias=False)
      if aggr.lower() not in ["mean", "max"]:
          raise Exception(
              "The aggregation provided is unrecognized {}".format(aggr)
          )
      self._aggr = aggr.lower()
  
imports: import numpy
  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 Data
  import torch_points_kernels
  from torch_points3d.core.spatial_ops import BaseMSNeighbourFinder
  from torch_points3d.core.base_conv import BaseConvolution
  from torch_points3d.core.common_modules.dense_modules import MLP2D
  from torch_points3d.utils.enums import ConvolutionFormat
  from torch_points3d.utils.model_building_utils.activation_resolver import get_activation
label_desc: Use image node_id 1 to create a new GlobalDenseBaseModule object from inherited base classes: torch.nn with example: obj = GlobalDenseBaseModule(nn, aggr, bn, activation)