All Projects → Tiiiger → Sgc

Tiiiger / Sgc

Licence: mit
official implementation for the paper "Simplifying Graph Convolutional Networks"

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Sgc

Algorithms
CLRS study. Codes are written with golang.
Stars: ✭ 482 (-14.84%)
Mutual labels:  graph
Aws Security Viz
Visualize your aws security groups.
Stars: ✭ 511 (-9.72%)
Mutual labels:  graph
Rubrowser
a ruby code dependency graph interactive visualizer
Stars: ✭ 532 (-6.01%)
Mutual labels:  graph
Things.sh
Simple read-only comand-line interface to your Things 3 database
Stars: ✭ 492 (-13.07%)
Mutual labels:  graph
Graph Visualization
3D graph visualization with WebGL / Three.js
Stars: ✭ 507 (-10.42%)
Mutual labels:  graph
Chat
基于自然语言理解与机器学习的聊天机器人,支持多用户并发及自定义多轮对话
Stars: ✭ 516 (-8.83%)
Mutual labels:  graph
Gremlin Scala
Scala wrapper for Apache TinkerPop 3 Graph DSL
Stars: ✭ 462 (-18.37%)
Mutual labels:  graph
React D3 Tree
🌳 React component to create interactive D3 tree graphs
Stars: ✭ 543 (-4.06%)
Mutual labels:  graph
Diagram
☊ Tool for making node graphs. Inspired by dependency graph. Used mainly for automation services 📈
Stars: ✭ 510 (-9.89%)
Mutual labels:  graph
Ttyplot
a realtime plotting utility for terminal/console with data input from stdin
Stars: ✭ 532 (-6.01%)
Mutual labels:  graph
Billboard.js
📊 Re-usable, easy interface JavaScript chart library based on D3.js
Stars: ✭ 5,032 (+789.05%)
Mutual labels:  graph
Pgf
A Portable Graphic Format for TeX
Stars: ✭ 504 (-10.95%)
Mutual labels:  graph
Scala Graph
Graph for Scala is intended to provide basic graph functionality seamlessly fitting into the Scala Collection Library. Like the well known members of scala.collection, Graph for Scala is an in-memory graph library aiming at editing and traversing graphs, finding cycles etc. in a user-friendly way.
Stars: ✭ 521 (-7.95%)
Mutual labels:  graph
Seegit
SeeGit - The Git Repository Visualizer
Stars: ✭ 483 (-14.66%)
Mutual labels:  graph
Opencypher
Specification of the Cypher property graph query language
Stars: ✭ 534 (-5.65%)
Mutual labels:  graph
Piecharts
Easy to use and highly customizable pie charts library for iOS
Stars: ✭ 476 (-15.9%)
Mutual labels:  graph
Gonum
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more
Stars: ✭ 5,384 (+851.24%)
Mutual labels:  graph
Esp Dash
A blazing fast library to create a functional dashboard for ESP8266 and ESP32
Stars: ✭ 548 (-3.18%)
Mutual labels:  graph
Specs
Content-addressed, authenticated, immutable data structures
Stars: ✭ 539 (-4.77%)
Mutual labels:  graph
Madge
Create graphs from your CommonJS, AMD or ES6 module dependencies
Stars: ✭ 5,635 (+895.58%)
Mutual labels:  graph

Simplifying Graph Convolutional Networks

made-with-python License: MIT

Updates

  • As pointed out by #23, there was a subtle bug in our preprocessing code for the reddit dataset. After fixing this bug, SGC achieves a F1 score of 95.0 (previously, it was 94.9).
  • Practical advice: it is often very helpful to normalize the features to have zero mean with standard deviation one to accelerate the convergence of SGC (and many other linear models). For example, we apply this normalization for the reddit dataset. Please consider doing this when applying SGC to other datasets. For some relevant discussions, see Ross et al, 2013 and Li and Zhang, 1998.

Authors:

*: Equal Contribution

Overview

This repo contains an example implementation of the Simple Graph Convolution (SGC) model, described in the ICML2019 paper Simplifying Graph Convolutional Networks.

SGC removes the nonlinearities and collapes the weight matrices in Graph Convolutional Networks (GCNs) and is essentially a linear model. For an illustration,

SGC achieves competitive performance while saving much training time. For reference, on a GTX 1080 Ti,

Dataset Metric Training Time
Cora Acc: 81.0 % 0.13s
Citeseer Acc: 71.9 % 0.14s
Pubmed Acc: 78.9 % 0.29s
Reddit F1: 94.9 % 2.7s

This home repo contains the implementation for citation networks (Cora, Citeseer, and Pubmed) and social network (Reddit). We have a work-in-progress branch ablation, containing additional codebase for our ablation studies.

If you find this repo useful, please cite:

@InProceedings{pmlr-v97-wu19e,
  title = 	 {Simplifying Graph Convolutional Networks},
  author = 	 {Wu, Felix and Souza, Amauri and Zhang, Tianyi and Fifty, Christopher and Yu, Tao and Weinberger, Kilian},
  booktitle = 	 {Proceedings of the 36th International Conference on Machine Learning},
  pages = 	 {6861--6871},
  year = 	 {2019},
  publisher = 	 {PMLR},
}

Other reference implementations

Other reference implementations can be found in the follwing libraries. Note that in these examples, the hyperparameters are potentially different and the results would be different from the paper reported ones.

Dependencies

Our implementation works with PyTorch>=1.0.0 Install other dependencies: $ pip install -r requirement.txt

Data

We provide the citation network datasets under data/, which corresponds to the public data splits. Due to space limit, please download reddit dataset from FastGCN and put reddit_adj.npz, reddit.npz under data/.

Usage

Citation Networks: We tune the only hyperparameter, weight decay, with hyperopt and put the resulting hyperparameter under SGC-tuning. See tuning.py for more details on hyperparameter optimization.

$ python citation.py --dataset cora --tuned
$ python citation.py --dataset citeseer --tuned --epochs 150 
$ python citation.py --dataset pubmed --tuned

Reddit:

$ python reddit.py --inductive --test

Downstream

We collect the code base for downstream tasks under downstream. Currently, we are releasing only SGC implementation for text classification.

Acknowledgement

This repo is modified from pygcn, and FastGCN.

We thank Deep Graph Library team for helping providing a reference implementation of SGC and benchmarking SGC in Deep Graph Library. We thank Matthias Fey, author of PyTorch Geometric, for his help on providing a reference implementation of SGC within PyTorch Geometric. We thank Daniele Grattarola, author of Spektral, for his help on providing a reference implementation of SGC within Spektral.

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].