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

About the developer

danielegrattarola
1.7K Stars 214 Forks MIT License 945 Commits 22 Opened issues

Description

Graph Neural Networks with Keras and Tensorflow 2.

Services available

!
?

Need anything else?

Contributors list

# 27,154
Python
HTML
Keras
graph-a...
684 commits
# 147,595
spectro...
sympy
Keras
tensorf...
20 commits
# 63,198
Dart
Keras
text-se...
tensorf...
18 commits
# 19,125
Lua
tcl
Keras
capsnet
16 commits
# 74,032
tpu
MATLAB
cvpr
Keras
14 commits
# 93
Python
robotfr...
apex
apache-...
12 commits
# 103,004
Keras
tensorf...
graph-n...
TeX
4 commits
# 225,115
Keras
tensorf...
Python
graph-n...
4 commits
# 316,246
Deep le...
Keras
tensorf...
Python
4 commits
# 117,644
Python
scikit-...
tensorf...
graph-c...
4 commits
# 290,252
C++
simd-in...
mathema...
Keras
4 commits
# 47,471
R
hugo
rmarkdo...
Keras
2 commits
# 109,979
Python
R
Google
tensorl...
2 commits

Welcome to Spektral

Spektral is a Python library for graph deep learning, based on the Keras API and TensorFlow 2. The main goal of this project is to provide a simple but flexible framework for creating graph neural networks (GNNs).

You can use Spektral for classifying the users of a social network, predicting molecular properties, generating new graphs with GANs, clustering nodes, predicting links, and any other task where data is described by graphs.

Spektral implements some of the most popular layers for graph deep learning, including:

and many others (see convolutional layers).

You can also find pooling layers, including:

Spektral also includes lots of utilities for representing, manipulating, and transforming graphs in your graph deep learning projects.

See how to get started with Spektral and have a look at the examples for some templates.

The source code of the project is available on Github.
Read the documentation here.

If you want to cite Spektral in your work, refer to our paper:

Graph Neural Networks in TensorFlow and Keras with Spektral
Daniele Grattarola and Cesare Alippi

Installation

Spektral is compatible with Python 3.5+, and is tested on Ubuntu 16.04+ and MacOS. Other Linux distros should work as well, but Windows is not supported for now.

The simplest way to install Spektral is from PyPi:

pip install spektral

To install Spektral from source, run this in a terminal:

git clone https://github.com/danielegrattarola/spektral.git
cd spektral
python setup.py install  # Or 'pip install .'

To install Spektral on Google Colab:

! pip install spektral

New in Spektral 1.0

The 1.0 release of Spektral is an important milestone for the library and brings many new features and improvements.

If you have already used Spektral in your projects, the only major change that you need to be aware of is the new

datasets
API.

This is a summary of the new features and changes:

  • The new
    Graph
    and
    Dataset
    containers standardize how Spektral handles data. This does not impact your models, but makes it easier to use your data in Spektral.
  • The new
    Loader
    class hides away all the complexity of creating graph batches. Whether you want to write a custom training loop or use Keras' famous model-dot-fit approach, you only need to worry about the training logic and not the data.
  • The new
    transforms
    module implements a wide variety of common operations on graphs, that you can now
    apply()
    to your datasets.
  • The new
    GeneralConv
    and
    GeneralGNN
    classes let you build models that are, well... general. Using state-of-the-art results from recent literature means that you don't need to worry about which layers or architecture to choose. The defaults will work well everywhere.
  • New datasets: QM7 and ModelNet10/40, and a new wrapper for OGB datasets.
  • Major clean-up of the library's structure and dependencies.
  • New examples and tutorials.

Contributing

Spektral is an open-source project available on Github, and contributions of all types are welcome. Feel free to open a pull request if you have something interesting that you want to add to the framework.

The contribution guidelines are available here and a list of feature requests is available here.

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.