1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
:orphan:
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 }}` (`Paper <{{ torch_geometric.nn.conv.utils.paper_link(cls) }}>`__)
- {% 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 }}` (`Paper <{{ torch_geometric.nn.conv.utils.paper_link(cls) }}>`__)
- {% 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 }}` (`Paper <{{ torch_geometric.nn.conv.utils.paper_link(cls) }}>`__)
- {% 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 }}` (`Paper <{{ torch_geometric.nn.conv.utils.paper_link(cls) }}>`__)
- {% if torch_geometric.nn.conv.utils.supports_bipartite_graphs(cls) %}✓{% endif %}
- {% if torch_geometric.nn.conv.utils.supports_lazy_initialization(cls) %}✓{% endif %}
{% endif %}
{% endfor %}
|