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 __init__(
      self,
      in_channels_neigh,
      out_channels,
      in_channels_self=None,
      remove_self_loop=True,
  ):
      super(HeteroSAGEConv, self).__init__(aggr="add")
      self.remove_self_loop = remove_self_loop
      self.in_channels_neigh = in_channels_neigh
      if in_channels_self is None:
          self.in_channels_self = in_channels_neigh
      else:
          self.in_channels_self = in_channels_self
      self.out_channels = out_channels
      self.lin_neigh = nn.Linear(
          self.in_channels_neigh, self.out_channels
      )
      self.lin_self = nn.Linear(
          self.in_channels_self, self.out_channels
      )
      self.lin_update = nn.Linear(
          self.out_channels * 2, 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 1 to create a new HeteroSAGEConv object from inherited base classes: pyg_nn with example: obj = HeteroSAGEConv(in_channels_neigh, out_channels, in_channels_remove__loop)