code: def forward(self, x, edge_index, batch, root_n_id):
      x = self.conv1(x, edge_index).relu()
      x = F.dropout(x, p=0.3)
      x = self.conv2(x, edge_index).relu()
      x = F.dropout(x, p=0.3, training=self.training)
      x = self.conv3(x, edge_index).relu()
      x = F.dropout(x, p=0.3, training=self.training)
  
      # We merge both central node embeddings and subgraph embeddings:
      x = torch.cat([x[root_n_id], global_mean_pool(x, batch)], dim=-1)
  
      x = self.lin(x)
      return x
  
file_path: pytorch_geometric/examples/shadow.py
imports: import os.path
  import torch
  import torch.nn.functional
  from torch_geometric.datasets import Flickr
  from torch_geometric.loader import ShaDowKHopSampler
  from torch_geometric.nn import SAGEConv, global_mean_pool
label_desc: Use image node_id 2 for calling the GNN obj's underlying member method code with example usage: obj.forward(x, edge_index, batch, root_n_id) and returns: x