Lanczos Network

This is the PyTorch implementation of Lanczos Network as described in the following ICLR 2019 paper:

@inproceedings{liao2019lanczos,
  title={LanczosNet: Multi-Scale Deep Graph Convolutional Networks},
  author={Liao, Renjie and Zhao, Zhizhen and Urtasun, Raquel and Zemel, Richard},
  booktitle={ICLR},
  year={2019}
}

Visualization

Benchmark

We also provide our own implementation of 9 recent graph neural networks on the QM8 benchmark:

You should be able to reproduce the following results of weighted mean absolute error (MAE x 1.0e-3):

Methods Validation MAE Test MAE
GCN-FP 15.06 +- 0.04 14.80 +- 0.09
GGNN 12.94 +- 0.05 12.67 +- 0.22
DCNN 10.14 +- 0.05 9.97 +- 0.09
ChebyNet 10.24 +- 0.06 10.07 +- 0.09
GCN 11.68 +- 0.09 11.41 +- 0.10
MPNN 11.16 +- 0.13 11.08 +- 0.11
GraphSAGE 13.19 +- 0.04 12.95 +- 0.11
GPNN 12.81 +- 0.80 12.39 +- 0.77
GAT 11.39 +- 0.09 11.02 +- 0.06
LanczosNet 9.65 +- 0.19 9.58 +- 0.14
AdaLanczosNet 10.10 +- 0.22 9.97 +- 0.20

Note:

Setup

To set up experiments, we need to download the preprocessed QM8 data and build our customized operators by running the following scripts:

./setup.sh

Note:

Dependencies

Python 3, PyTorch(1.0)

Other dependencies can be installed via

pip install -r requirements.txt

Run Demos

Train

Note:

Test

Run on General Graph Datasets

I provide an example code for a synthetic graph regression problem, i.e., given multiple graphs, each of which is accompanied with node embeddings, it is required to predict a real-valued graph embedding vector per graph.

Note:

Cite

Please cite our paper if you use this code in your research work.

Questions/Bugs

Please submit a Github issue or contact rjliao@cs.toronto.edu if you have any questions or find any bugs.