As an open-source project, deezer/linear_graph_autoencoders has picked up 136 stars on GitHub (Python). Source code from the NeurIPS 2019 workshop article "Keep It Simple: Graph Autoencoders Without Graph Convolutional Networks" (G. Salha, R. Hennequin, M. Vazirgiannis) + k-core framework implementation from IJCAI 2019 article "A Degeneracy Framework for Scalable Graph Autoencoders" (G. Salha, R. Hennequin, V.A. Tran, M. Vazirgiannis)
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
This repository provides Python (Tensorflow) code to reproduce experiments from the article Keep It Simple: Graph Autoencoders Without Graph Convolutional Networks presented at the NeurIPS 2019 Workshop on Graph Representation Learning.
Update: an extended conference version of this article is now available here: Simple and Effective Graph Autoencoders with One-Hop Linear Models (accepted at ECML-PKDD 2020).
Update 2: do you prefer PyTorch? An implementation of Linear Graph AE and VAE is now available in the pytorch_geometric project! See the example here.
Introduction
We release Tensorflow implementations of the following two graph embedding models from the paper:
Linear Graph Autoencoders
Linear Graph Variational Autoencoders
together with standard Graph Autoencoders (AE) and Graph Variational Autoencoders (VAE) models (with 2-layer or 3-layer Graph Convolutional Networks encoders) from Kipf and Welling (2016).
We evaluate all models on the link prediction and node clustering tasks introduced in the paper. We provide the Cora, Citeseer and Pubmed datasets in the data folder, and refer to section 4 of the paper for direct link to the additional datasets used in our experiments.
Our code builds upon Thomas Kipf's original Tensorflow implementation of standard Graph AE/VAE.
Scaling-Up Graph AE and VAE
Standard Graph AE and VAE models suffer from scalability issues. In order to scale them to large graphs with millions of nodes and egdes, we also provide an implementation of our framework from the article A Degeneracy Framework for Scalable Graph Autoencoders (IJCAI 2019). In this paper, we propose to train the graph AE/VAE only from a dense subset of nodes, namely the k-core or k-degenerate subgraph. Then, we propagate embedding representations to the remaining nodes using faster heuristics.
Update: in this other repository, we provide an implementation of FastGAE, a new (and more effective) method from our group to scale Graph AE and VAE.
The above commands will train a standard Graph VAE with 2-layer GCN encoders (line 2) and a Linear Graph VAE (line 3) on Cora dataset and will evaluate embeddings on the Link Prediction task, with all parameters set to default values.
By adding --kcore=True, the model will only be trained on the k-core subgraph instead of using the entire graph. Here, k is a parameter (from 0 to the maximal core number of the graph) to specify using the --k flag.
Complete list of parameters
Parameter
Type
Description
Default Value
model
string
Name of the model, among: - gcn_ae: Graph AE from Kipf and Welling (2016), with 2-layer GCN encoder and inner product decoder - gcn_vae: Graph VAE from Kipf and Welling (2016), with Gaussian distributions, 2-layer GCN encoders for mu and sigma, and inner product decoder - linear_ae: Linear Graph AE, as introduced in section 3 of NeurIPS workshop paper, with linear encoder, and inner product decoder - linear_vae: Linear Graph VAE, as introduced in section 3 of NeurIPS workshop paper, with Gaussian distributions, linear encoders for mu and sigma, and inner product decoder - deep_gcn_ae: Deeper version of Graph AE, with 3-layer GCN encoder, and inner product decoder - deep_gcn_vae: Deeper version of Graph VAE, with Gaussian distributions, 3-layer GCN encoders for mu and sigma, and inner product decoder
gcn_ae
dataset
string
Name of the dataset, among: - cora: scientific publications citation network - citeseer: scientific publications citation network - pubmed: scientific publications citation network
We provide the preprocessed versions, coming from the tkipf/gae repository. Please check the LINQS website for raw data
You can specify any additional graph dataset, in edgelist format, by editing input_data.py
cora
task
string
Name of the Machine Learning evaluation task, among: - link_prediction: Link Prediction - node_clustering: Node Clustering
See section 4 and supplementary material of NeurIPS 2019 workshop paper for details about tasks
link_prediction
dropout
float
Dropout rate
0.
epoch
int
Number of epochs in model training
200
features
boolean
Whether to include node features in encoder
False
learning_rate
float
Initial learning rate (with Adam optimizer)
0.01
hidden
int
Number of units in GCN encoder hidden layer(s)
32
dimension
int
Dimension of encoder output, i.e. embedding dimension
16
kcore
boolean
Whether to run k-core decomposition and use the degeneracy framework from IJCAI paper. If False, the AE/VAE will be trained on the entire graph
False
k
int
Which k-core to use. Higher k => smaller graphs and faster (but maybe less accurate) training
2
nb_run
integer
Number of model runs + tests
1
prop_val
float
Proportion of edges in validation set (for Link Prediction)
5.
prop_test
float
Proportion of edges in test set (for Link Prediction)
10.
validation
boolean
Whether to report validation results at each epoch (for Link Prediction)
Set --task=node_clustering with same hyperparameters to evaluate models on node clustering (as in Table 4) instead of link prediction
Set --nb_run=100 to report mean AUC and AP along with standard errors over 100 runs, as in the paper
We recommend GPU usage for faster learning
Cite
1 - Please cite the following paper(s) if you use linear graph AE/VAE code in your own work.
NeurIPS 2019 workshop version:
@misc{salha2019keep,
title={Keep It Simple: Graph Autoencoders Without Graph Convolutional Networks},
author={Salha, Guillaume and Hennequin, Romain and Vazirgiannis, Michalis},
howpublished={Workshop on Graph Representation Learning, 33rd Conference on Neural Information Processing Systems (NeurIPS)},
year={2019}
}
and/or the extended conference version:
@inproceedings{salha2020simple,
title={Simple and Effective Graph Autoencoders with One-Hop Linear Models},
author={Salha, Guillaume and Hennequin, Romain and Vazirgiannis, Michalis},
booktitle={European Conference on Machine Learning and Principles and Practice of Knowledge Discovery in Databases (ECML-PKDD)},
year={2020}
}
2 - Please cite the following paper if you use the k-core framework for scalability in your own work.
@inproceedings{salha2019degeneracy,
title={A Degeneracy Framework for Scalable Graph Autoencoders},
author={Salha, Guillaume and Hennequin, Romain and Tran, Viet Anh and Vazirgiannis, Michalis},
booktitle={28th International Joint Conference on Artificial Intelligence (IJCAI)},
year={2019}
}
Does deezer/linear_graph_autoencoders have any tags?
TopGit's last sync did not record any GitHub topics for deezer/linear_graph_autoencoders. GitHub topics appear in the right sidebar of a repository page; that's the authoritative place to check.
How active is development on deezer/linear_graph_autoencoders?
The most recent commit recorded on deezer/linear_graph_autoencoders was 5.8 years ago, based on the GitHub push timestamp. The repository has 16 forks — one of the better signals of community interest.
How many stars does deezer/linear_graph_autoencoders have?
deezer/linear_graph_autoencoders has 136 GitHub stars — refresh the page for the live number, or check github.com/deezer/linear_graph_autoencoders. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What language is deezer/linear_graph_autoencoders written in?
deezer/linear_graph_autoencoders is written primarily in Python. GitHub's language field is based on the largest share of bytes in the default branch.
Where do I read more about deezer/linear_graph_autoencoders?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/deezer/linear_graph_autoencoders is the definitive source.
Read full README in the tab above.
Still deciding about linear_graph_autoencoders?
One click hands the question to an AI along with this page — see what it says about linear_graph_autoencoders.