code: def forward(self, x, edge_index, batch):
      h = self.conv1(x, edge_index).relu()
      h = global_max_pool(h, batch)
  
      if self.concat:
          # Get the root node (tweet) features of each graph:
          root = (
              (batch[1:] - batch[:-1]).nonzero(as_tuple=False).view(-1)
          )
          root = torch.cat([root.new_zeros(1), root + 1], dim=0)
          news = x[root]
  
          news = self.lin0(news).relu()
          h = self.lin1(torch.cat([news, h], dim=-1)).relu()
  
      h = self.lin2(h)
      return h.log_softmax(dim=-1)
  
file_path: pytorch_geometric/examples/upfd.py
imports: import argparse
  import os.path
  import torch
  import torch.nn.functional
  from torch.nn import Linear
  from torch_geometric.datasets import UPFD
  from torch_geometric.loader import DataLoader
  from torch_geometric.nn import GATConv, GCNConv, SAGEConv, global_max_pool
  from torch_geometric.transforms import ToUndirected
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, batch) and returns: h