code: def forward(self, x, edge_index, edge_attr, batch):
      x = self.node_emb(x.squeeze())
      edge_attr = self.edge_emb(edge_attr)
  
      for conv, batch_norm in zip(self.convs, self.batch_norms):
          x = F.relu(batch_norm(conv(x, edge_index, edge_attr)))
  
      x = global_add_pool(x, batch)
      return self.mlp(x)
  
file_path: pytorch_geometric/examples/pna.py
imports: import os.path
  import torch
  import torch.nn.functional
  from torch.nn import Embedding, Linear, ModuleList, ReLU, Sequential
  from torch.optim.lr_scheduler import ReduceLROnPlateau
  from torch_geometric.datasets import ZINC
  from torch_geometric.loader import DataLoader
  from torch_geometric.nn import BatchNorm, PNAConv, global_add_pool
  from torch_geometric.utils import degree
label_desc: Use image node_id 2 for calling the Net obj's underlying member method code with example usage: obj.forward(x, edge_index, edge_attr, batch) and returns: self