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

EdisonLeeeee
158 Stars 28 Forks MIT License 587 Commits 0 Opened issues

Description

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

logo

TensorFLow or PyTorch? Both!

Python tensorflow pytorch pypi license

GraphGallery

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.

💨 NEWS

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

🚀 Installation

pip install -U graphgallery

or

bash
https://github.com/EdisonLeeeee/GraphGallery.git
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

Datasets

more details please refer to GraphData.

Example of GCN

from graphgallery.gallery import GCN

initialize a GNN trainer

trainer = GCN(graph)

process your inputs, such as converting to tensors

trainer.process()

build your GCN trainer with default hyper-parameters

trainer.build()

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 graphgallery.data 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

mydataset.to_npz('path/to/mydataset.npz')

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
    and
    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!

Cite

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.