/JKNet-dgl

A DGL implementation of "Representation Learning on Graphs with Jumping Knowledge Networks".(ICML 2018)

Primary LanguagePython

DGL Implementation of JKNet

This DGL example implements the GNN model proposed in the paper Representation Learning on Graphs with Jumping Knowledge Networks.

Contributor: xnuohz

Requirements

The codebase is implemented in Python 3.6. For version requirement of packages, see below.

dgl 0.6.0
scikit-learn 0.24.1
tqdm 4.56.0
torch 1.7.1

The graph datasets used in this example

Node Classification

The DGL's built-in Cora, Citeseer datasets. Dataset summary:

Dataset #Nodes #Edges #Feats #Classes #Train Nodes #Val Nodes #Test Nodes
Cora 2,708 10,556 1,433 7(single label) 60% 20% 20%
Citeseer 3,327 9,228 3,703 6(single label) 60% 20% 20%

Usage

Dataset options
--dataset          str     The graph dataset name.             Default is 'Cora'.
GPU options
--gpu              int     GPU index.                          Default is -1, using CPU.
Model options
--run              int     Number of running times.                    Default is 10.
--epochs           int     Number of training epochs.                  Default is 500.
--lr               float   Adam optimizer learning rate.               Default is 0.01.
--lamb             float   L2 regularization coefficient.              Default is 0.0005.
--hid-dim          int     Hidden layer dimensionalities.              Default is 32.
--num-layers       int     Number of T.                                Default is 5.
--mode             str     Type of aggregation ['cat', 'max', 'lstm']. Default is 'cat'.
--dropout          float   Dropout applied at all layers.              Default is 0.5.
Examples

The following commands learn a neural network and predict on the test set. Train a JKNet which follows the original hyperparameters on different datasets.

# Cora:
python main.py --gpu 0 --mode max --num-layers 6
python main.py --gpu 0 --mode cat --num-layers 6
python main.py --gpu 0 --mode lstm --num-layers 1

# Citeseer:
python main.py --gpu 0 --dataset Citeseer --mode max --num-layers 1
python main.py --gpu 0 --dataset Citeseer --mode cat --num-layers 1
python main.py --gpu 0 --dataset Citeseer --mode lstm --num-layers 2

Performance

As the author does not release the code, we don't have the access to the data splits they used.

Node Classification
  • Cora
JK-Maxpool JK-Concat JK-LSTM
Metrics(Table 2) 89.6±0.5 89.1±1.1 85.8±1.0
Metrics(DGL) 86.1±1.5 85.1±1.6 84.2±1.6
  • Citeseer
JK-Maxpool JK-Concat JK-LSTM
Metrics(Table 2) 77.7±0.5 78.3±0.8 74.7±0.9
Metrics(DGL) 70.9±1.9 73.0±1.5 69.0±1.7