All Projects → diningphil → CGMM

diningphil / CGMM

Licence: BSD-3-Clause license
Official Repository of "Contextual Graph Markov Model" (ICML 2018 - JMLR 2020)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to CGMM

Graph datasets
A Repository of Benchmark Graph Datasets for Graph Classification (31 Graph Datasets In Total).
Stars: ✭ 185 (+428.57%)
Mutual labels:  graphs
Visualize ruby
Transform code into a flowchart and experimentally trace the execution path through it
Stars: ✭ 237 (+577.14%)
Mutual labels:  graphs
esapp
An unsupervised Chinese word segmentation tool.
Stars: ✭ 13 (-62.86%)
Mutual labels:  unsupervised-learning
Mpv Stats
Display file statistics in mpv.
Stars: ✭ 192 (+448.57%)
Mutual labels:  graphs
React Trend
📈 Simple, elegant spark lines
Stars: ✭ 2,453 (+6908.57%)
Mutual labels:  graphs
Pygraphblas
GraphBLAS for Python
Stars: ✭ 252 (+620%)
Mutual labels:  graphs
Unity Easinglibraryvisualisation
Front end visualisation of 40 common easing equations.
Stars: ✭ 178 (+408.57%)
Mutual labels:  graphs
scalajs-highcharts
Scala.js static typed facades for Highcharts library
Stars: ✭ 30 (-14.29%)
Mutual labels:  graphs
Deepgraph
Analyze Data with Pandas-based Networks. Documentation:
Stars: ✭ 232 (+562.86%)
Mutual labels:  graphs
TA3N
[ICCV 2019 Oral] TA3N: https://github.com/cmhungsteve/TA3N (Most updated repo)
Stars: ✭ 45 (+28.57%)
Mutual labels:  unsupervised-learning
Swiftcharts
Easy to use and highly customizable charts library for iOS
Stars: ✭ 2,336 (+6574.29%)
Mutual labels:  graphs
Squid
A Ruby library to plot charts in PDF files
Stars: ✭ 205 (+485.71%)
Mutual labels:  graphs
echarty
Minimal R/Shiny Interface to ECharts.js
Stars: ✭ 49 (+40%)
Mutual labels:  graphs
Javafxsmartgraph
Generic (Java FX) Graph Visualization Library
Stars: ✭ 186 (+431.43%)
Mutual labels:  graphs
sigmaNet
Render igraphs from R using Sigma.js
Stars: ✭ 38 (+8.57%)
Mutual labels:  graphs
Grano
A toolkit for mapping networks of political and economic influence through diverse types of entities and their relations. Accessible at http://granoproject.org
Stars: ✭ 181 (+417.14%)
Mutual labels:  graphs
Graphview
Android Graph Library for creating zoomable and scrollable line and bar graphs.
Stars: ✭ 2,643 (+7451.43%)
Mutual labels:  graphs
CS-DisMo
[ICCVW 2021] Rethinking Content and Style: Exploring Bias for Unsupervised Disentanglement
Stars: ✭ 20 (-42.86%)
Mutual labels:  unsupervised-learning
flowtorch-old
Separating Normalizing Flows code from Pyro and improving API
Stars: ✭ 36 (+2.86%)
Mutual labels:  probabilistic-graphical-models
CBioInfCpp-0-
The lib CBioInfCpp.h contains 3 groups of functions for C++: "Input-Output", "Working with strings", "Working with graphs". Data structures "Adjacency vector" and "Adjacency map" are implemented in the last one (i.e. in "Working with graphs"). See About_CBioInfCpp for details.
Stars: ✭ 12 (-65.71%)
Mutual labels:  graphs

Contextual Graph Markov Model (CGMM)

Summary

CGMM is a generative approach to learning contexts in graphs. It combines information diffusion and local computation through the use of a deep architecture and stationarity assumptions. The model does NOT preprocess the graph into a fixed structure before learning. Instead, it works with graphs of any size and shape while retaining scalability. Experiments show that this model works well compared to expensive kernel methods that extensively analyse the entire input structure in order to extract relevant features. In contrast, CGMM extract more abstract features as the architecture is built (incrementally).

We hope that the exploitation of the proposed framework, which can be extended in many directions, can contribute to the extensive use of both generative and discriminative approaches to the adaptive processing of structured data.

This repo

The library includes data and scripts to reproduce the tree/graph classification experiments reported in the paper describing the method (please look at previous releases).

This research software is provided as is. If you happen to use or modify this code, please remember to cite the foundation papers:

Bacciu Davide, Errica Federico, Micheli Alessio: Probabilistic Learning on Graphs via Contextual Architectures. Journal of Machine Learning Research, 21(134):1−39, 2020.

Bacciu Davide, Errica Federico, Micheli Alessio: Contextual Graph Markov Model: A Deep and Generative Approach to Graph Processing. Proceedings of the 35th International Conference on Machine Learning, 80:294-303, 2018.

27th of July 2020: Paper accepted at JMLR!

Please see the reference above.

3rd of March 2020 UPDATE

Thanks to the amazing work of Daniele Atzeni we have dramatically increased the performance of bigram computation. With C=4, continuous posteriors and matrix operations in place of nested for loops, we have been able to get a speedup of 900x (yes.. 900x) on NCI1 with a single core. Bravo Daniele!

5th of November 2019 UPDATE

We refactored the whole repository to allow for easy experimentation with incremental architectures. New efficiency improvements are coming soon. Stay tuned!

24th of May 2019 UPDATE

We provide an extended and refactored version of CGMM, implemented in Pytorch. There are additional experimental routines to try some common graph classification tasks. Please refer to the "Paper Version" Release tag for the original code of the paper.

Usage

This repo builds upon PyDGN, a framework to easily develop and test new DGNs. See how to construct your dataset and then train your model there.

This repo assumes PyDGN 1.0.3 is used. Compatibility with future versions is not guaranteed, e.g., custom metrics need to be slightly modified starting from PyDGN 1.2.1.

The evaluation is carried out in two steps:

  • Generate the unsupervised graph embeddings
  • Apply a classifier on top

We designed two separate experiments to avoid recomputing the embeddings each time. First, use the config_CGMM_Embedding.yml config file to create the embeddings, specifying the folder where to store them in the parameter embeddings_folder. Then, use the config_CGMM_Classifier.yml config file to launch the classification experiments.

Launch Exp:

Build dataset and data splits (follow PyDGN tutorial)

You can use the data splits we provided for graph classification tasks, taken from our ICLR 2020 paper on reproducibility.

For instance:

pydgn-dataset --config-file DATA_CONFIGS/config_PROTEINS.yml

Train the model

pydgn-train  --config-file MODEL_CONFIGS/config_CGMM_Embedding.yml 
pydgn-train  --config-file MODEL_CONFIGS/config_CGMM_Classifier.yml 
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].