README.md 1.64 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# directional_GSN

## Introduction

This is an example of implementing [directional_GSN](https://arxiv.org/abs/2006.09252) for graph classification in DGL.

directional_GSN is a combination of Graph Substructure Networks ([GSN](https://arxiv.org/abs/2006.09252)) with Directional Graph Networks ([DGN](https://arxiv.org/pdf/2010.02863.pdf)), where we defined a vector field based on substructure encoding instead of Laplacian eigenvectors.

The script in this folder experiments directional_GSN on ogbg-molpcba dataset.

## Installation requirements
```
conda create --name gsn python=3.7
conda activate gsn
conda install pytorch==1.11.0 cudatoolkit=10.2 -c pytorch
pip install tqdm
pip install networkx
conda install -c conda-forge graph-tool
pip install ogb
pip install dgl-cu102 -f https://data.dgl.ai/wheels/repo.html
```

## Experiments

We fix the random seed to 41, and train the model on a single Tesla T4 GPU with 16GB memory.

### ogbg-molpcba

#### performance

|                  | train_AP | valid_AP | test_AP | #parameters |
| ---------------- | ---------| -------- | ------- | ----------- |
| directional_GSN  | 0.4301   | 0.2598   | 0.2438  | 5142713     |


#### Reproduction of performance

```{.bash}
python preprocessing.py
python main.py --seed 41 --epochs 450 --hidden_dim 420 --out_dim 420 --dropout 0.2
```

## References

```{.tex}
@article{bouritsas2020improving,
  title={Improving graph neural network expressivity via subgraph isomorphism counting},
  author={Bouritsas, Giorgos and 
          Frasca, Fabrizio and 
          Zafeiriou, Stefanos and 
          Bronstein, Michael M},
  journal={arXiv preprint arXiv:2006.09252},
  year={2020}
}
```