Back to Pytorch Geometric

GNN Cheatsheet

docs/source/cheatsheet/gnn_cheatsheet.rst

2.7.05.5 KB
Original Source

GNN Cheatsheet

  • :class:~torch_sparse.SparseTensor: If checked (✓), supports message passing based on :class:torch_sparse.SparseTensor, e.g., :obj:GCNConv(...).forward(x, adj_t). See here <../advanced/sparse_tensor.html>__ for the accompanying tutorial.

  • :obj:edge_weight: If checked (✓), supports message passing with one-dimensional edge weight information, e.g., :obj:GraphConv(...).forward(x, edge_index, edge_weight).

  • :obj:edge_attr: If checked (✓), supports message passing with multi-dimensional edge feature information, e.g., :obj:GINEConv(...).forward(x, edge_index, edge_attr).

  • bipartite: If checked (✓), supports message passing in bipartite graphs with potentially different feature dimensionalities for source and destination nodes, e.g., :obj:SAGEConv(in_channels=(16, 32), out_channels=64).

  • static: If checked (✓), supports message passing in static graphs, e.g., :obj:GCNConv(...).forward(x, edge_index) with :obj:x having shape :obj:[batch_size, num_nodes, in_channels].

  • lazy: If checked (✓), supports lazy initialization of message passing layers, e.g., :obj:SAGEConv(in_channels=-1, out_channels=64).

Graph Neural Network Operators

.. list-table:: :widths: 40 10 10 10 10 10 10 :header-rows: 1

* - Name
  - :class:`~torch_sparse.SparseTensor`
  - :obj:`edge_weight`
  - :obj:`edge_attr`
  - bipartite
  - static
  - lazy

{% for cls in torch_geometric.nn.conv.classes[1:] %} {% if not torch_geometric.nn.conv.utils.processes_heterogeneous_graphs(cls) and not torch_geometric.nn.conv.utils.processes_hypergraphs(cls) and not torch_geometric.nn.conv.utils.processes_point_clouds(cls) %} * - :class:~torch_geometric.nn.conv.{{ cls }} {% if torch_geometric.nn.conv.utils.paper_link(cls) %}(Paper <{{ torch_geometric.nn.conv.utils.paper_link(cls) }}>__){% endif %} - {% if torch_geometric.nn.conv.utils.supports_sparse_tensor(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_edge_weights(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_edge_features(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_bipartite_graphs(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_static_graphs(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_lazy_initialization(cls) %}✓{% endif %} {% endif %} {% endfor %}

Heterogeneous Graph Neural Network Operators

.. list-table:: :widths: 40 10 10 10 10 10 10 :header-rows: 1

* - Name
  - :class:`~torch_sparse.SparseTensor`
  - :obj:`edge_weight`
  - :obj:`edge_attr`
  - bipartite
  - static
  - lazy

{% for cls in torch_geometric.nn.conv.classes[1:] %} {% if torch_geometric.nn.conv.utils.processes_heterogeneous_graphs(cls) %} * - :class:~torch_geometric.nn.conv.{{ cls }} {% if torch_geometric.nn.conv.utils.paper_link(cls) %}(Paper <{{ torch_geometric.nn.conv.utils.paper_link(cls) }}>__){% endif %} - {% if torch_geometric.nn.conv.utils.supports_sparse_tensor(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_edge_weights(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_edge_features(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_bipartite_graphs(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_static_graphs(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_lazy_initialization(cls) %}✓{% endif %} {% endif %} {% endfor %}

Hypergraph Neural Network Operators

.. list-table:: :widths: 40 10 10 10 10 10 10 :header-rows: 1

* - Name
  - :class:`~torch_sparse.SparseTensor`
  - :obj:`edge_weight`
  - :obj:`edge_attr`
  - bipartite
  - static
  - lazy

{% for cls in torch_geometric.nn.conv.classes[1:] %} {% if torch_geometric.nn.conv.utils.processes_hypergraphs(cls) %} * - :class:~torch_geometric.nn.conv.{{ cls }} {% if torch_geometric.nn.conv.utils.paper_link(cls) %}(Paper <{{ torch_geometric.nn.conv.utils.paper_link(cls) }}>__){% endif %} - {% if torch_geometric.nn.conv.utils.supports_sparse_tensor(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_edge_weights(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_edge_features(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_bipartite_graphs(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_static_graphs(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_lazy_initialization(cls) %}✓{% endif %} {% endif %} {% endfor %}

Point Cloud Neural Network Operators

.. list-table:: :widths: 80 10 10 :header-rows: 1

* - Name
  - bipartite
  - lazy

{% for cls in torch_geometric.nn.conv.classes[1:] %} {% if torch_geometric.nn.conv.utils.processes_point_clouds(cls) %} * - :class:~torch_geometric.nn.conv.{{ cls }} {% if torch_geometric.nn.conv.utils.paper_link(cls) %}(Paper <{{ torch_geometric.nn.conv.utils.paper_link(cls) }}>__){% endif %} - {% if torch_geometric.nn.conv.utils.supports_bipartite_graphs(cls) %}✓{% endif %} - {% if torch_geometric.nn.conv.utils.supports_lazy_initialization(cls) %}✓{% endif %} {% endif %} {% endfor %}