项目文件夹

文件
lt610 d70ca6eb7c [Example] graphsaint (#2792)
* graphsaint

* graphsaint

* graphsaint

* graphsaint

* fixed the model

* fixed some bugs

* fixed the computing of normalization and updated the results

* fixed some bugs and updated the results

* Update utils.py

* Update train_sampling.py

* Update train_sampling.py

Co-authored-by: Mufei Li <mufeili1996@gmail.com>
Co-authored-by: Quan (Andy) Gan <coin2028@hotmail.com>
2021-05-11 16:25:56 +08:00
..
2021-05-11 16:25:56 +08:00
2021-05-11 16:25:56 +08:00
2021-05-11 16:25:56 +08:00
2021-05-11 16:25:56 +08:00
2021-05-11 16:25:56 +08:00

GraphSAINT

This DGL example implements the paper: GraphSAINT: Graph Sampling Based Inductive Learning Method.

Paper link: https://arxiv.org/abs/1907.04931

Author's code: https://github.com/GraphSAINT/GraphSAINT

Contributor: Liu Tang (@lt610)

Dependencies

  • Python 3.7.0
  • PyTorch 1.6.0
  • NumPy 1.19.2
  • Scikit-learn 0.23.2
  • DGL 0.5.3

Dataset

All datasets used are provided by Author's code. They are available in Google Drive (alternatively, Baidu Wangpan (code: f1ao)). Once you download the datasets, you need to rename graphsaintdata to data. Dataset summary("m" stands for multi-label classification, and "s" for single-label.):

Dataset Nodes Edges Degree Feature Classes Train/Val/Test
PPI 14,755 225,270 15 50 121(m) 0.66/0.12/0.22
Flickr 89,250 899,756 10 500 7(s) 0.50/0.25/0.25

Minibatch training

Run with following:

python train_sampling.py --gpu 0 --dataset ppi --sampler node --node-budget 6000 --num-repeat 50 --n-epochs 1000 --n-hidden 512 --arch 1-0-1-0
python train_sampling.py --gpu 0 --dataset ppi --sampler edge --edge-budget 4000 --num-repeat 50 --n-epochs 1000 --n-hidden 512 --arch 1-0-1-0 --dropout 0.1
python train_sampling.py --gpu 0 --dataset ppi --sampler rw --num-roots 3000 --length 2 --num-repeat 50 --n-epochs 1000 --n-hidden 512 --arch 1-0-1-0 --dropout 0.1
python train_sampling.py --gpu 0 --dataset flickr --sampler node --node-budget 8000 --num-repeat 25 --n-epochs 30 --n-hidden 256 --arch 1-1-0 --dropout 0.2
python train_sampling.py --gpu 0 --dataset flickr --sampler edge --edge-budget 6000 --num-repeat 25 --n-epochs 15 --n-hidden 256 --arch 1-1-0 --dropout 0.2
python train_sampling.py --gpu 0 --dataset flickr --sampler rw --num-roots 6000 --length 2 --num-repeat 25 --n-epochs 15 --n-hidden 256 --arch 1-1-0 --dropout 0.2

Comparison

  • Paper: results from the paper
  • Running: results from experiments with the authors' code
  • DGL: results from experiments with the DGL example

F1-micro

Random node sampler

Method PPI Flickr
Paper 0.960±0.001 0.507±0.001
Running 0.9628 0.5077
DGL 0.9618 0.4828

Random edge sampler

Method PPI Flickr
Paper 0.981±0.007 0.510±0.002
Running 0.9810 0.5066
DGL 0.9818 0.5054

Random walk sampler

Method PPI Flickr
Paper 0.981±0.004 0.511±0.001
Running 0.9812 0.5104
DGL 0.9818 0.5018

Sampling time

Random node sampler

Method PPI Flickr
Sampling(Running) 0.77 0.65
Sampling(DGL) 0.24 0.57
Normalization(Running) 0.69 2.84
Normalization(DGL) 1.04 0.41

Random edge sampler

Method PPI Flickr
Sampling(Running) 0.72 0.56
Sampling(DGL) 0.50 0.72
Normalization(Running) 0.68 2.62
Normalization(DGL) 0.61 0.38

Random walk sampler

Method PPI Flickr
Sampling(Running) 0.83 1.22
Sampling(DGL) 0.28 0.63
Normalization(Running) 0.87 2.60
Normalization(DGL) 0.70 0.42