Spectral Graph Convolutional Neural Network (SGCNN)
The code in this repository implements an efficient generalization of the popular Convolutional Neural Networks (CNNs) to arbitrary graphs, presented in our paper:
Michaël Defferrard, Xavier Bresson, Pierre Vandergheynst, Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering, Neural Information Processing Systems (NIPS), 2016.
The code is released under the terms of the MIT license. Please cite the above paper if you use it.
Additional material:
- NIPS2016 spotlight video
- Deep Learning on Graphs (lecture for EPFL's master course A Network Tour of Data Science)
There is also implementations of the filters used in:
- Joan Bruna, Wojciech Zaremba, Arthur Szlam, Yann LeCun, Spectral Networks and Locally Connected Networks on Graphs, International Conference on Learning Representations (ICLR), 2014.
- Mikael Henaff, Joan Bruna and Yann LeCun, Deep Convolutional Networks on Graph-Structured Data, arXiv, 2015.
Installation
-
Clone this repository.
git clone https://github.com/mdeff/cnn_graph cd cnn_graph
-
Install the dependencies. Please edit
requirements.txt
to choose the TensorFlow version (CPU / GPU, Linux / Mac) you want to install, or install it beforehand. The code was developed with TF 0.8 but people have used it with newer versions.pip install -r requirements.txt # or make install
-
Play with the Jupyter notebooks.
jupyter notebook
Reproducing our results
Run all the notebooks to reproduce the experiments on MNIST and 20NEWS presented in the paper.
cd nips2016
make
Using the model
To use our graph ConvNet on your data, you need:
- a data matrix where each row is a sample and each column is a feature,
- a target vector,
- optionally, an adjacency matrix which encodes the structure as a graph.
See the usage notebook for a simple example with fabricated data. Please get in touch if you are unsure about applying the model to a different setting.