GNN is a novel and powerful deep neural network for graph classification, It usually consists of (1)graph convolution layer which extract local substructure features for individual links and (2) a SortPooling layer which aggregates node-level features into a graph-level feature vector. It's directly accepts graph data as input without the need of first transforming graphs into tensors, make end-to-end gradient-based training possible. And it enables learning from global topology by sorting the vertex features instead of summing them up, which is supportd by SortPooling layer.
This repository provides a reference implementation of GNN based on Tensorflow.
For more information, please refer to:
M. Zhang, Z. Cui, M. Neumann, and Y. Chen, An End-to-End Deep Learning Architecture for Graph Classification, Proc. AAAI Conference on Artificial Intelligence (AAAI-18). and the origal PyTorch implementation of DGCNN is here
To run the GNN on the mutag(default setting), type the following command on the home directory:
python main.py
python main.py --data proteinsto runGNNon proteinspython main.py --epoch 200to assign the number of epochs, default value is 100python main.py -r 0.00001orpython main.py --learning_rate 0.00001to set the learning rate which determine the speed of update.- ...
you can check out the other options available to use python main.py --help
| Dataset | Mutag | NCI1 | PROTEINS | D&D |
|---|---|---|---|---|
| Nodes(max) | 28 | 111 | 620 | 5748 |
| Nodes(avg.) | 17.93 | 29.87 | 39.06 | 284.32 |
| Nodes(min) | 10 | 3 | 4 | 30 |
| Graphs | 188 | 4110 | 1113 | 1178 |
| GNN | 0.8684(0.058844) | 0.7073(0.018595) | 0.7509(0.027505) | 0.7432(0.047040) |
To be continued...