code: def __init__(self, convs, args, aggr="mean"):
      super(HeteroGNNWrapperConv, self).__init__(convs, None)
      self.aggr = aggr
  
      # Map the index and message type
      self.mapping = {}
  
      # A numpy array that stores the final attention probability
      self.alpha = None
  
      self.attn_proj = None
  
      if self.aggr == "attn":
          self.attn_proj = nn.Sequential(
              nn.Linear(args.hidden_size, args.attn_size),
              nn.Tanh(),
              nn.Linear(args.attn_size, 1, bias=False),
          )
  
imports: import copy
  import torch
  import argparse
  import deepsnap
  import numpy
  import torch.nn
  import torch.nn.functional
  import torch_geometric.nn
  from sklearn.metrics import f1_score
  from deepsnap.hetero_gnn import forward_op, HeteroSAGEConv
  from deepsnap.hetero_graph import HeteroGraph
  from torch_sparse import SparseTensor, matmul
label_desc: Use image node_id 1 to create a new HeteroGNNWrapperConv object from inherited base classes: deepsnap.hetero_gnn with example: obj = HeteroGNNWrapperConv(convs, args, aggr)