Need help with GraphGallery?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

158 Stars 28 Forks MIT License 587 Commits 0 Opened issues


GraphGallery is a gallery for benchmarking Graph Neural Networks (GNNs) and Graph Adversarial Learning with TensorFlow 2.x and PyTorch backend.

Services available


Need anything else?

Contributors list

No Data


TensorFLow or PyTorch? Both!

Python tensorflow pytorch pypi license


GraphGallery is a gallery for benchmarking Graph Neural Networks (GNNs) and Graph Adversarial Learning with TensorFlow 2.x and PyTorch backend. Besides, Pytorch Geometric (PyG) backend and Deep Graph Library (DGL) backend now are available in GraphGallery.


We have integrated the Adversarial Attacks in this project, examples please refer to Graph Adversarial Learning examples.

🚀 Installation

pip install -U graphgallery


cd GraphGallery
pip install -e .
GraphGallery has been tested on: + CPU, CUDA 10.1, CUDA 11.0 + TensorFlow 2.1~2.4, 2.1.2 is recommended. + PyTorch 1.4~1.7 + Pytorch Geometric (PyG) 1.6.1 + DGL 0.5.2, 0.5.3

🤖 Implementations

Please refer to the examples directory. (The examples are updating...)

⚡ Quick Start on GNNs


more details please refer to GraphData.

Example of GCN

from import GCN

initialize a GNN trainer

trainer = GCN(graph)

process your inputs, such as converting to tensors


build your GCN trainer with default hyper-parameters

train your trainer. here splits.train_nodes and splits.val_nodes are numpy arrays

verbose takes 0, 1, 2, 3, 4

history = trainer.train(splits.train_nodes, splits.val_nodes, verbose=1, epochs=100)

test your trainer

verbose takes 0, 1, 2

results = trainer.test(splits.nodes, verbose=1) print(f'Test loss {results.loss:.5}, Test accuracy {results.accuracy:.2%}')

Other models in the gallery are the same.

Using Other Backend

>>> import graphgallery
>>> graphgallery.backend()
TensorFlow 2.1.2 Backend

>>> graphgallery.set_backend("pytorch") PyTorch 1.6.0+cu101 Backend

DGL PyTorch backend

>>> graphgallery.set_backend("dgl")

DGL TensorFlow backend

>>> graphgallery.set_backend("dgl-tf")

But your codes don't even need to change.

❓ How to add your datasets

This is motivated by gnn-benchmark ```python from import Graph

Load the adjacency matrix A, attribute matrix X and labels vector y

A - scipy.sparse.csrmatrix of shape [numnodes, num_nodes]

X - scipy.sparse.csrmatrix or np.ndarray of shape [numnodes, num_attrs]

y - np.ndarray of shape [num_nodes]

mydataset = Graph(adjmatrix=A, nodeattr=X, node_label=y)

save dataset


load dataset

mydataset = Graph.from_npz('path/to/mydataset.npz') ```

⭐ Road Map

  • [x] Add PyTorch trainers support
  • [x] Add other frameworks (PyG and DGL) support
  • [ ] Add more GNN trainers (TF and Torch backend)
  • [ ] Support for more tasks, e.g.,
    graph Classification
    link prediction
  • [x] Support for more types of graphs, e.g., Heterogeneous graph
  • [ ] Add Docstrings and Documentation (Building)
  • [ ] Comprehensive tutorials

😘 Acknowledgement

This project is motivated by Pytorch Geometric, Tensorflow Geometric, Stellargraph and DGL, etc., and the original implementations of the authors, thanks for their excellent works!


We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.