[mlpack] GSoC Proposal: Graph Convolutional Networks (GCN)

Hemal Mamtora hemalmamtora1 at gmail.com
Sun Mar 15 01:51:48 EDT 2020


Hello Mentors,

Thank you for your reviews regarding the project on the IRC. The've helped
me shape the proposal well.

The following is the flow of the proposal for Graph Convolutional Networks.
I've tried to keep it as concise as possible. We could discuss in depth
regarding each or any of the parts of the proposal, if required.
Please provide suggestions or any comments for the same.
Thanks.

*Proposal:*
Since Graph Convolutional Networks work on graphs, it would be a good
extension to MLpack's breadth.
The reference paper link: https://arxiv.org/abs/1609.02907

*Preparatory work:*
1. Explore Sparse Matrices and Multiplication with Dense-Sparse matrices
with respect to Armadillo and MLpack
2. Graphs could be represented as Sparse matrices (Adjacency Matrix) so the
Input/Output of graph data would not be an issue.

*API structure:*
The API for GCN would be very similar to MLpack's regular Convolution
Operation, Convolution Layer and CNN.
I've gone through the source code for Convolution in MLpack repository.

*Phase 1:*
1. Implement Graph Convolutional *Operation*: H(l + 1) = σ(D̂-½ Ã D̂-½ H(l)
W(l)) [refer the paper: https://arxiv.org/abs/1609.02907]
2. Testing & Documentation for Graph Convolutional *Operation*

*Phase 2:*
1. Implement Graph Convolutional *Layer*: Forward(), Backward(),
Serialize(), Gradient(), etc.
2. Testing & Documentation for the same.

*Phase 3: *
1. Implement Graph Convolutional *Network* in mlpack/models
2. Testing Documenting & Benchmarking of Graph Convolutional *Network*.
Benchmarking with respect to tf and keras implementation provided by author
of the paper.


*Future Scope:*1. Spatio Temporal Graph Networks (ST-GCN, DCRNN)
2. Graph Attention Networks (GAT)

*References:*
1. (curated repositories) https://github.com/Jiakui/awesome-gcn
2. (survey paper) https://arxiv.org/abs/1901.00596

*One query:*
The Graph datasets available online have different formats like GraphML,
Adjacency List in a CSV, Edge List in a CSV, etc.
They would have to be converted to Adjacency Matrix.
Most of the time the conversion is *straightforward* in O(E) time, where E
is the number of edges.
What are your views on having this functionality of ToAdjacencyMatrix() in
MLpack.
I think it should not be in MLpack. We could say that MLpack expects
AdjacencyMatrix (Sparse or Dense) for Graph Networks.
But if you think that this functionality should exist, I could start
implementing it, asap.

Thank you once again!

Regards,
Hemal Mamtora
Final Year, Computer Engineering
Sardar Patel Institute of Technology, Mumbai
Contact: +91 75061 89728
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20200315/c1251035/attachment.htm>


More information about the mlpack mailing list