code: def forward(
      self,
      x_dict,
      edge_index_dict,
      num_sampled_edges_dict,
      num_sampled_nodes_dict,
  ):
      for i, conv in enumerate(self.convs):
          x_dict, edge_index_dict, _ = trim_to_layer(
              layer=i,
              num_sampled_nodes_per_hop=num_sampled_nodes_dict,
              num_sampled_edges_per_hop=num_sampled_edges_dict,
              x=x_dict,
              edge_index=edge_index_dict,
          )
  
          x_dict = conv(x_dict, edge_index_dict)
          x_dict = {key: x.relu() for key, x in x_dict.items()}
  
      return self.lin(x_dict["paper"])
  
file_path: pytorch_geometric/examples/hetero/hierarchical_sage.py
imports: import argparse
  import torch
  import torch.nn.functional
  from tqdm import tqdm
  import torch_geometric.transforms
  from torch_geometric.datasets import OGB_MAG
  from torch_geometric.loader import NeighborLoader
  from torch_geometric.nn import HeteroConv, Linear, SAGEConv
  from torch_geometric.utils import trim_to_layer
label_desc: Use image node_id 2 for calling the HierarchicalHeteroGraphSage obj's underlying member method code with example usage: obj.forward(x_dict, edge_index_dict, num_sampled_edges_dict, num_sampled_nodes_dict) and returns: self