This is the code repository for [Paper]: "Learning Graph Representation via Graph Entropy Maximization (ICML 2024)". GeMax is an approximation method leveraging orthonormal representation for graph representation learning by maximizing graph entropy.
- Clone the repository:
git clone https://github.com/MathAdventurer/GeMax.git
cd GeMax- Create a new conda environment using the provided
environment.yamlfile:
conda env create -f environment.yaml
conda activate gemaxNote: GeMax requires NVIDIA CUDA (version >= 11.3) and NVIDIA GPUs. The project depends on PyTorch, Deep Graph Library (DGL), NetworkX, and scikit-learn libraries, etc. For more information, see the environment.yaml file.
To train and evaluate a model using GeMax, run the following command:
python main.py --config configs/gemax_infograph_mutag-example.yamlThe config.yaml configuration file contains the following settings:
dataset: The name of the dataset to use for training (e.g., MUTAG).mode: The mode of the script, either "train" or "evaluate".model: The type of graph neural network to use (e.g., infograph, gin).batch_size: The batch size for training.hidden_dim: The dimension of the hidden layers in the model.out_dim: The dimension of the output embeddings.lrandlr_A: The learning rate for the optimizer.num_epochs: The number of training epochs.eval_every: The frequency of evaluation during training (in epochs).mu: The regularization coefficient for the orthogonal loss.gamma: The regularization coefficient for the sub-vertex packing loss.seed: The random seed for reproducibility.
To evaluate a trained model, run:
python main.py --config configs/gemax_infograph_mutag-example.yaml --mode evaluate --model_path path/to/trained/model.pthGeMax/
├── data/
│ ├── MUTAG/
│ ├── PROTEINS/
│ ├── DD/
│ ├── NCI1/
│ ├── COLLAB/
│ ├── IMDB-B/
│ ├── REDDIT-B/
│ └── ...
├── configs/
│ └── ...
├── models/
│ ├── __init__.py
│ ├── gemax.py
│ ├── gin.py
│ ├── infograph.py
│ └── ...
├── utils/
│ ├── __init__.py
│ ├── data_processing.py
│ ├── evaluation.py
│ └── utils.py
├── figures/
│ └── ...
├── main.py
├── experiment.py
├── evaluate.py
├── environment.yaml
├── README.md
└── LICENSE
If you find this work useful, please cite our paper:
@InProceedings{pmlr-v235-sun24i,
title = {Learning Graph Representation via Graph Entropy Maximization},
author = {Sun, Ziheng and Wang, Xudong and Ding, Chris and Fan, Jicong},
booktitle = {Proceedings of the 41st International Conference on Machine Learning},
pages = {47133--47158},
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/sun24i/sun24i.pdf},
url = {https://proceedings.mlr.press/v235/sun24i.html}
}This project is licensed under the MIT License. See the LICENSE file for more information.
