xnuohz / JKNet-dgl

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

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


Languages

Language:Python 100.0%