code: def __init__(
      self,
      dim,
      att_head,
      dropout=0,
      norm=False,
      skip_connect=False,
      *args,
      **kwargs,
  ):
      super(AggAttn, self).__init__()
      self.dropout = dropout
      self.att_head = att_head
      self.ln_attn = nn.BatchNorm1d(
          dim, track_running_stats=True, affine=True
      )
      self.norm = norm
      self.skip_connect = skip_connect
  
imports: from torch_geometric.nn import MessagePassing
  from torch_geometric.utils import softmax
  import torch
  import torch.nn
  import torch.nn.functional
  from torch_geometric.nn import GCNConv, SAGEConv, GATConv, ARMAConv, ChebConv, GatedGraphConv, SGConv
  from typing import Union, Tuple, Optional
  from torch_geometric.typing import OptPairTensor, Adj, Size, NoneType, OptTensor
  import torch
  from torch import Tensor
  import torch.nn.functional
  from torch.nn import Parameter, Linear
  from torch_sparse import SparseTensor, set_diag
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.utils import remove_self_loops, add_self_loops, softmax
  from torch_geometric.nn.inits import glorot, zeros
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.nn.functional
  from torch.nn import Parameter
  from torch_geometric.nn.inits import glorot, zeros
  from torch_geometric.utils import softmax
  from torch_scatter import scatter_add
  import numpy
  from ..graph_nas_macro import GeoLayer
label_desc: Use image node_id 1 to create a new AggAttn object from inherited base classes: MessagePassing with example: obj = AggAttn(dim, att_head, dropout, norm, skip_connect)