class_docstr: A "wrapper" layer designed for heterogeneous graph layers. It takes a
  heterogeneous graph layer, such as :class:`deepsnap.hetero_gnn.HeteroSAGEConv`, 
  at the initializing stage. Currently DeepSNAP does not support `parallelize=True`.
  
  .. note::
  
      For more detailed use of :class:`HeteroConv`, see the `examples/node_classification_hetero 
      <https://github.com/snap-stanford/deepsnap/tree/master/examples/node_classification_hetero>`_ 
      folder.
code: def __init__(self, convs, aggr="add", parallelize=False):
      super(HeteroConv, self).__init__()
  
      assert isinstance(convs, collections.abc.Mapping)
      self.convs = convs
      self.modules = torch.nn.ModuleList(convs.values())
  
      assert aggr in ["add", "mean", "max", "mul", "concat", None]
      self.aggr = aggr
  
      if parallelize and torch.cuda.is_available():
          self.streams = {
              key: torch.cuda.Stream() for key in convs.keys()
          }
      else:
          self.streams = None
  
imports: import collections.abc
  import torch
  import torch_geometric.nn
  import torch_geometric.utils
  import torch.nn
  from torch import Tensor
  from torch_geometric.nn.inits import reset
  from torch_sparse import matmul
  from typing import List, Dict
label_desc: Use image node_id 1 to create a new HeteroConv object from inherited base classes: torch.nn with example: obj = HeteroConv(convs, aggr, parallelize)