GithubHelp home page GithubHelp logo

flyingtango / digcn Goto Github PK

View Code? Open in Web Editor NEW
44.0 2.0 8.0 11.7 MB

Implement of DiGCN, NeurIPS-2020

License: MIT License

Python 100.00%
graph neurips-2020 semi-supervised-learning graph-neural-networks digraphs

digcn's Introduction

Digraph Inception Convolutional Networks

Paper | Poster | Supplementary

This repository is the official PyTorch implementation of Digraph Inception Convolutional Networks, where we make GCNs available in digraphs (directed graphs) and propose an Inception network to learn multi-scale features in digraphs.

Illustration of digraph conv

directed_schema

 

Illustration of DiGCN model

inception_block

 

If you find our work useful, please considering citing

@article{tong2020digraph,
  title={Digraph Inception Convolutional Networks},
  author={Tong, Zekun and Liang, Yuxuan and Sun, Changsheng and Li, Xinke and Rosenblum, David and Lim, Andrew},
  journal={Advances in Neural Information Processing Systems},
  volume={33},
  year={2020}
}

Requirements

Our project is developed using Python 3.7, PyTorch 1.5.0 with CUDA10.2. We recommend you to use anaconda for dependency configuration.

First create an anaconda environment called DiGCN by

conda create -n DiGCN python=3.7
conda activate DiGCN

Then, you need to install torch manually to fit in with your server environment (e.g. CUDA version). For the torch and torchvision used in my project, run

conda install pytorch==1.5.0 torchvision==0.6.0 cudatoolkit=10.2 -c pytorch

Besides, torch-scatter and torch-sparse are required for dealing with sparse graph. For these two packages, please follow their official instruction torch-scatter and torch-sparse.

Other requirements can be set up through:

cd DiGCN
pip install -e .

Run

cd code
python gcn.py --gpu-no 0 --dataset cora_ml
python digcn.py --gpu-no 0 --dataset cora_ml
python digcn_ib.py --gpu-no 0 --dataset cora_ml

Results

results

License

DiGCN is released under the MIT License. See the LICENSE file for more details.

Acknowledgements

The template is borrowed from Pytorch-Geometric benchmark suite. We thank the authors of following works for opening source their excellent codes. Pytorch-Geometric,Graph2Gauss,GNN-benchmark

digcn's People

Contributors

flyingtango avatar sherylhyx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

digcn's Issues

Can be applied to large-scale graph?

I think that this work cannot be applied to large-scale graphs for the reason that calculating the adj through your method needs eigen decomposition and to_dense() method needs large memory available.
eig_value, left_vector = scipy.linalg.eig(p_ppr.numpy(),left=True,right=False) p_dense = torch.sparse.FloatTensor(edge_index, p, torch.Size([num_nodes,num_nodes])).to_dense()

Question about equation 4

Dear author,
I'm a little confused about Eq.4. You adopt symmetric normalized directed Laplacian proposed by Chung F (2005), however, It is not clear to me why the graph filter in Eq 4 can reflect directed property? Since it is a symmetric matrix.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.