/FSGNN

Primary LanguagePython

FSGNN

Implementation of FSGNN. For more details, please refer to our paper. This work is further extended into our second paper. Experiments were conducted with following setup:
Pytorch: 1.6.0
Python: 3.8.5
Cuda: 10.2.89 Trained on NVIDIA V100 GPU.

Summary of results

Dataset 3-hop Accuracy(%) 8-hop Accuracy(%) 16-hop Accuracy(%) 32-hop Accuracy(%)
Cora 87.73 87.93 87.91 87.83
Citeseer 77.19 77.40 77.46 77.46
Pubmed 89.73 89.75 89.60 89.63
Chameleon 78.14 78.27 78.36 78.53
Wisconsin 88.43 87.84 88.04 88.24
Texas 87.30 87.30 86.76 86.76
Cornell 87.03 87.84 86.76 88.11
Squirrel 73.48 74.10 73.95 74.15
Actor 35.67 35.75 35.25 35.22
Actor(no-norm) 37.63 37.75 37.67 37.62

To run node classification on different hops:

3-hop : ./run_classification_3_hop.sh

8-hop : ./run_classification_8_hop.sh

16-hop : ./run_classification_16_hop.sh

32-hop : ./run_classification_32_hop.sh

In addition, we include model accuracy of Actor dataset without using hop-normalization, as model shows higher accuracy in this setting.

Results with considering homophily/heterophily assumption in datasets

Dataset 3-hop Accuracy(%) 8-hop Accuracy(%)
Cora 87.61 88.23
Citeseer 77.17 77.35
Pubmed 89.70 89.78
Chameleon 78.93 78.95
Wisconsin 88.24 87.65
Texas 87.57 87.57
Cornell 87.30 87.30
Squirrel 73.86 73.94
Actor 35.38 35.62

To get above results, please run

./run_classification_feat_type.sh

Results with Sub Feature Setting

Sub_Feature setting is when a subset of hop features is selected to train the model.

To get results with sum operation over hop features,

./run_sub_feature_sum.sh

To get results with concatenation operation over hop features,

./run_sub_feature_cat.sh

Results with removing ReLU activation between the layers

To get results with sum operation over hop features,

./run_sub_feature_no_relu_sum.sh

To get results with concatenation operation over hop features,

./run_sub_feature_no_relu_cat.sh

ogbn-papers100M (large-scale dataset)

Improved model than mentioned in the paper with extra FC layer. Please run python process_large.py in folder named large_data first to create data splits. Pre-processed training splits (4-hops) are available for download here. Please download all pickle files and save them into large_data folder.

Then run ./run_ogbn_papers.sh to train the model.

Accuracy shown below is average over five runs with random seeds 0-4.

Dataset 4-hop Accuracy (%)
ogbn-papers100M 68.07

(Results may vary slightly with a different platform, e.g. use of different GPU. In such case, for best performance, some hyperparameter search may be required. Please refer to PyTorch documentation for more details.)

Datasets and parts of preprocessing code were taken from Geom-GCN and GCNII repositories. We thank the authors of these papers for sharing their code.