Wanyu Lin, Hao Lan, and Baochun Li. "Generative Causal Explanations for Graph Neural Networks," in the Proceedings of the 38th International Conference on Machine Learning (ICML 2021), Online, July 18-24, 2021.
git clone https://github.com/wanyu-lin/ICML2021-Gem Gem
cd Gem
git submodule init
git submodule update
cd gnnexp
git apply --ignore-space-change --ignore-whitespace ../gnnexp.patch
Create an environment with conda:
conda create -n gem python=3.8.8
conda activate gem
Install PyTorch with CUDA 10.2:
conda install pytorch cudatoolkit=10.2 -c pytorch
Or install PyTorch without CUDA:
conda install pytorch cpuonly -c pytorch
Install other required packages:
conda install opencv scikit-learn networkx pandas matplotlib seaborn
pip install tensorboardx
See preparation.md or extract from zip file:
unzip ckpt.zip
unzip gnnexp_explanation.zip
python generate_ground_truth.py --dataset=syn1 --top_k=6
python generate_ground_truth.py --dataset=syn4 --top_k=6
python generate_ground_truth_graph_classification.py --dataset=Mutagenicity --output=mutag --graph-mode --top_k=20
python generate_ground_truth_graph_classification.py --dataset=NCI1 --output=nci1_dc --graph-mode --top_k=20 --disconnected
or you can directly extract from zip file
unzip distillation.zip
python explainer_gae.py --dataset=syn1 --distillation=syn1_top6 --output=syn1_top6
python explainer_gae.py --dataset=syn4 --distillation=syn4_top6 --output=syn4_top6
python explainer_gae_graph.py --distillation=mutag_top20 --output=mutag_top20 --dataset=Mutagenicity --gpu -b 128 --weighted --gae3 --loss=mse --early_stop --graph_labeling --train_on_positive_label --epochs=300 --lr=0.01
python explainer_gae_graph.py --distillation=nci1_dc_top20 --output=nci1_dc_top20 --dataset=NCI1 --gpu -b 128 --weighted --gae3 --loss=mse --early_stop --graph_labeling --train_on_positive_label --epochs=300 --lr=0.01
python test_explained_adj.py --dataset=syn1 --distillation=syn1_top6 --exp_out=syn1_top6 --top_k=6
python test_explained_adj.py --dataset=syn4 --distillation=syn4_top6 --exp_out=syn4_top6 --top_k=6
python test_explained_adj_graph.py --graph-mode --dataset=Mutagenicity --exp_out=mutag_top20 --distillation=mutag_top20 --top_k=15 --test_out=mutag_top20_top15
python test_explained_adj_graph.py --graph-mode --dataset=NCI1 --exp_out=nci1_dc_top20 --distillation=nci1_dc_top20 --top_k=15 --test_out=nci1_dc_top20_top15
Run *.ipynb
files in Jupyter Notebook or Jupyter Lab.
If you make advantage of Gem in your research, please cite the following in your manuscript:
@inproceedings{
wanyu-icml21,
title="{Generative Causal Explanations for Graph Neural Networks}",
author={Lin, Wanyu and Lan, Hao and Li, Baochun},
booktitle={International Conference on Machine Learning},
year={2021},
url={https://arxiv.org/pdf/2104.06643.pdf},
}