DUPLEX: Dual Graph Attention Network for Complex Embedding of Directed Graphs
This PyTorch implementation showcases the DUPLEX model as described in the paper [DUPLEX: Dual GAT for Complex Embedding of Directed Graphs].
Figure 1: The network architecture of DUPLEX.
Requirements
Ubuntu OS
Python 3.8
PyTorch 2.0.1
CUDA 11.4
You can install the necessary dependencies using the following command:
conda env create -f environment.yml
Data Preparation
To preprocess data, follow these steps:
Navigate to the ./code/ directory using the command cd ./code/.
Open the ./generate_data.ipynb notebook to generate DGL graphs from raw data.
Execute python ./train_edge/split_data.py to create the train/validation/test sets for the link prediction task.
Execute python ./train_node_ind/process_data.py to create the train/validation/test sets for the node classification task.
Training & Evaluation
To conduct experiments, follow these steps:
Navigate to the ./code/ directory using the command cd ./code/.
Execute python ./train_edge/train.py for link prediction.
Execute python ./train_node_trans/train.py for transductive node classification.
Execute python ./train_node_ind/train.py for inductive node classification.
For details on each command-line argument, please refer to the explanations provided in the respective training scripts.
Citation
title = {{DUPLEX}: Dual {GAT} for Complex Embedding of Directed Graphs},
author = {Ke, Zhaoru and Yu, Hang and Li, Jianguo and Zhang, Haipeng},
booktitle = {Proceedings of the 41st International Conference on Machine Learning},
pages = {23430--23448},
year = {2024},
editor = {Salakhutdinov, Ruslan and Kolter, Zico and Heller, Katherine and Weller, Adrian and Oliver, Nuria and Scarlett, Jonathan and Berkenkamp, Felix},
volume = {235},
series = {Proceedings of Machine Learning Research},
month = {21--27 Jul},
publisher = {PMLR},
pdf = {https://raw.githubusercontent.com/mlresearch/v235/main/assets/ke24c/ke24c.pdf},
url = {https://proceedings.mlr.press/v235/ke24c.html},
abstract = {Current directed graph embedding methods build upon undirected techniques but often inadequately capture directed edge information, leading to challenges such as: (1) Suboptimal representations for nodes with low in/out-degrees, due to the insufficient neighbor interactions; (2) Limited inductive ability for representing new nodes post-training; (3) Narrow generalizability, as training is overly coupled with specific tasks. In response, we propose DUPLEX, an inductive framework for complex embeddings of directed graphs. It (1) leverages Hermitian adjacency matrix decomposition for comprehensive neighbor integration, (2) employs a dual GAT encoder for directional neighbor modeling, and (3) features two parameter-free decoders to decouple training from particular tasks. DUPLEX outperforms state-of-the-art models, especially for nodes with sparse connectivity, and demonstrates robust inductive capability and adaptability across various tasks. The code will be available upon publication.}
}
Contact
For any questions related to DUPLEX, please submit them to Github Issues.
DUPLEX: Dual Graph Attention Network for Complex Embedding of Directed Graphs
This PyTorch implementation showcases the DUPLEX model as described in the paper [DUPLEX: Dual GAT for Complex Embedding of Directed Graphs].
Requirements
You can install the necessary dependencies using the following command:
Data Preparation
To preprocess data, follow these steps:
./code/directory using the commandcd ./code/../generate_data.ipynbnotebook to generate DGL graphs from raw data.python ./train_edge/split_data.pyto create the train/validation/test sets for the link prediction task.python ./train_node_ind/process_data.pyto create the train/validation/test sets for the node classification task.Training & Evaluation
To conduct experiments, follow these steps:
./code/directory using the commandcd ./code/.python ./train_edge/train.pyfor link prediction.python ./train_node_trans/train.pyfor transductive node classification.python ./train_node_ind/train.pyfor inductive node classification.For details on each command-line argument, please refer to the explanations provided in the respective training scripts.
Citation
Contact
For any questions related to DUPLEX, please submit them to Github Issues.