class_docstr: The heterogeneous compitable GraphSAGE operator is derived from the `"Inductive Representation
  Learning on Large Graphs" <https://arxiv.org/abs/1706.02216>`_, `"Modeling polypharmacy side
  effects with graph convolutional networks" <https://arxiv.org/abs/1802.00543>`_, and `"Modeling
  Relational Data with Graph Convolutional Networks" <https://arxiv.org/abs/1703.06103>`_ papers.
  
  .. note::
  
      This layer is usually used with the :class:`HeteroConv`.
  
  Args:
      in_channels_neigh (int): The input dimension of the neighbor node type.
      out_channels (int): The dimension of the output.
      in_channels_self (int): The input dimension of the self node type.
          Default is `None` where the `in_channels_self` is equal to `in_channels_neigh`.
      remove_self_loop (bool): Whether to remove self loops using :class:`torch_geometric.utils.remove_self_loops`.
          Default is `True`.
code: def __repr__(self):
      return (
          f"{self.__class__.__name__}"
          f"(neigh: {self.in_channels_neigh}, self: {self.in_channels_self}, "
          f"out: {self.out_channels})"
      )
  
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 6 for calling the HeteroSAGEConv obj's underlying member method code with example usage: obj.__repr__() and returns: self, str, self, str, self, str, self, str