Implicit Graph Neural Networks

Related tags

Deep Learning IGNN
Overview

Implicit Graph Neural Networks

This repository is the official PyTorch implementation of "Implicit Graph Neural Networks".

Fangda Gu*, Heng Chang*, Wenwu Zhu, Somayeh Sojoudi, Laurent El Ghaoui, Implicit Graph Neural Networks, NeurIPS 2020.

Requirements

The script has been tested running under Python 3.6.9, with the following packages installed (along with their dependencies):

  • pytorch (tested on 1.6.0)
  • torch_geometric (tested on 1.6.1)
  • scipy (tested on 1.5.2)
  • numpy (tested on 1.19.2)

Tasks

We provide examples on the tasks of node classification and graph classification consistent with the experimental results of our paper. Please refer to nodeclassification and graphclassification for usage.

Reference

  • If you find IGNN useful in your research, please cite the following in your manuscript:
@inproceedings{gu2020implicit,
  title={Implicit Graph Neural Networks},
  author={Gu, Fangda and Chang, Heng and Zhu, Wenwu and Sojoudi, Somayeh and El Ghaoui, Laurent},
  journal={Advances in Neural Information Processing Systems},
  volume={33},
  year={2020}
}
Comments
  •  The result Different from paper(与论文不符)

    The result Different from paper(与论文不符)

    I run this code. My f1-micro of PPI is 0.491,while in paper it is 0.976. And during the process, the following appears many times: Iterations not converging! tensor(32., device='cuda:0') max itrs . Waiting for you answer!

    opened by WhateverSir 4
  • Value error appears in graph classification task with MUTAG

    Value error appears in graph classification task with MUTAG

    Hi, thank you for your code, I've learned a lot from it. Now I met a problem("ValueError: row, column, and data arrays must be 1-D") when I'm running train_IGNN.py in your graphclassification folder. The problem occurs because data.edge_attr is not None and it's a N*4 tensor, so adj_sp cannot be constructed correctly. Could you please tell me how to fix this?

    Thank you and look forward to your reply:)

    opened by 7qchen 3
  • Synthetic datasets

    Synthetic datasets

    Dear authors,

    Thanks for your impressive work. I have a few questions about the synthetic datasets.

    1. In Figure 1, the x-axis starts with 0. Does it mean that the length is 0? How can we create chains without nodes? I think it would be totally a none graph?
    2. You mentioned in the paper that 20 nodes for training. But the number of nodes is not fixed for datasets with chains having different lengths, right? So, the setting 20/100/200 for train/val/test is only for the dataset with 20 chains for each class and 10-length chains? Because the number of nodes is decided by c*n*l as you stated in the code.

    Thanks in advance.

    opened by liu-jc 1
  • IGNN_PPI failed to achieve performance as reported

    IGNN_PPI failed to achieve performance as reported

    Hi there @SwiftieH , thank you for your great work on implicit GNN.

    Since I am running the train_IGNN_PPI.py for training IGNN on PPI dataset, I found it's hard to get the micro F1-score, which is around 95% as reported in the paper, instead I get test set F1-score only around 50% after 1000 epochs, the training loss could be larger (over 10,000,000) after 250+ epochs, I think there is something wrong with the training. The experiment setting is all default (lr=0.01, kappa=0.98, no weight decay), the forward and backward iteration in implicit function is 300 respectively.

    I am wondering if there is anything needs to be extra cared, for example increasing the forward/backward iterations to achieve the F1-score results above 95%. Or if I missed some important things in the training, please remind me. Thanks!

    opened by XiChen-97 0
  • Weight projection during testing

    Weight projection during testing

    Hi there @SwiftieH , thanks for your impressive work!

    On looking at the code in nodeclassification/layers.py. I am a little confused about the weight projection. It's certain that during training process, every time the forward() is called, self.W is normalized (||W||_inf < kappa/rho(A))

        def forward(self, X_0, A, U, phi, A_rho=1.0, fw_mitr=500, bw_mitr=500, A_orig=None):
            """Allow one to use a different A matrix for convolution operation in equilibrium equ"""
            if self.k is not None: # when self.k = 0, A_rho is not required
                self.W = projection_norm_inf(self.W, kappa=self.k/A_rho)
            support_1 = torch.spmm(torch.transpose(U, 0, 1), `self.Omega_1.T).T`
            support_1 = torch.spmm(torch.transpose(A, 0, 1), support_1.T).T
            support_2 = torch.spmm(torch.transpose(U, 0, 1), self.Omega_2.T).T
            b_Omega = support_1 #+ support_2
            return ImplicitFunction.apply(self.W, X_0, A if A_orig is None else A_orig, b_Omega, phi, fw_mitr, bw_mitr)
    

    It seems like in the testing process, the weight (learned from training) is normalized again before being passed into the implicit function, is it what supposed to do? Or should we just use the 'original' weight from the training process and not normalize again in the testing process, which can be achieved by using e.g.

    if self.training:
      if self.k is not None: # when self.k = 0, A_rho is not required
                self.W = projection_norm_inf(self.W, kappa=self.k/A_rho)
    

    Thanks!

    opened by XiChen-97 0
Owner
Heng Chang
Tsinghua CS PhD
Heng Chang
A static analysis library for computing graph representations of Python programs suitable for use with graph neural networks.

python_graphs This package is for computing graph representations of Python programs for machine learning applications. It includes the following modu

Google Research 258 Dec 29, 2022
The source code of the paper "Understanding Graph Neural Networks from Graph Signal Denoising Perspectives"

GSDN-F and GSDN-EF This repository provides a reference implementation of GSDN-F and GSDN-EF as described in the paper "Understanding Graph Neural Net

Guoji Fu 18 Nov 14, 2022
Some tentative models that incorporate label propagation to graph neural networks for graph representation learning in nodes, links or graphs.

Some tentative models that incorporate label propagation to graph neural networks for graph representation learning in nodes, links or graphs.

zshicode 1 Nov 18, 2021
On Size-Oriented Long-Tailed Graph Classification of Graph Neural Networks

On Size-Oriented Long-Tailed Graph Classification of Graph Neural Networks We provide the code (in PyTorch) and datasets for our paper "On Size-Orient

Zemin Liu 4 Jun 18, 2022
Complex-Valued Neural Networks (CVNN)Complex-Valued Neural Networks (CVNN)

Complex-Valued Neural Networks (CVNN) Done by @NEGU93 - J. Agustin Barrachina Using this library, the only difference with a Tensorflow code is that y

youceF 1 Nov 12, 2021
π-GAN: Periodic Implicit Generative Adversarial Networks for 3D-Aware Image Synthesis

π-GAN: Periodic Implicit Generative Adversarial Networks for 3D-Aware Image Synthesis Project Page | Paper | Data Eric Ryan Chan*, Marco Monteiro*, Pe

null 375 Dec 31, 2022
Digan - Official PyTorch implementation of Generating Videos with Dynamics-aware Implicit Generative Adversarial Networks

DIGAN (ICLR 2022) Official PyTorch implementation of "Generating Videos with Dyn

Sihyun Yu 147 Dec 31, 2022
This is the repository for the AAAI 21 paper [Contrastive and Generative Graph Convolutional Networks for Graph-based Semi-Supervised Learning].

CG3 This is the repository for the AAAI 21 paper [Contrastive and Generative Graph Convolutional Networks for Graph-based Semi-Supervised Learning]. R

null 12 Oct 28, 2022
Simple command line tool for text to image generation using OpenAI's CLIP and Siren (Implicit neural representation network)

Deep Daze mist over green hills shattered plates on the grass cosmic love and attention a time traveler in the crowd life during the plague meditative

Phil Wang 4.4k Jan 3, 2023
Code for Iso-Points: Optimizing Neural Implicit Surfaces with Hybrid Representations

Implementation for Iso-Points (CVPR 2021) Official code for paper Iso-Points: Optimizing Neural Implicit Surfaces with Hybrid Representations paper |

Yifan Wang 66 Nov 8, 2022
Pytorch implementation of COIN, a framework for compression with implicit neural representations 🌸

COIN ?? This repo contains a Pytorch implementation of COIN: COmpression with Implicit Neural representations, including code to reproduce all experim

Emilien Dupont 104 Dec 14, 2022
Code for the paper "Implicit Representations of Meaning in Neural Language Models"

Implicit Representations of Meaning in Neural Language Models Preliminaries Create and set up a conda environment as follows: conda create -n state-pr

Belinda Li 39 Nov 3, 2022
Neural implicit reconstruction experiments for the Vector Neuron paper

Neural Implicit Reconstruction with Vector Neurons This repository contains code for the neural implicit reconstruction experiments in the paper Vecto

Congyue Deng 35 Jan 2, 2023
Proximal Backpropagation - a neural network training algorithm that takes implicit instead of explicit gradient steps

Proximal Backpropagation Proximal Backpropagation (ProxProp) is a neural network training algorithm that takes implicit instead of explicit gradient s

Thomas Frerix 40 Dec 17, 2022
Official code release for ICCV 2021 paper SNARF: Differentiable Forward Skinning for Animating Non-rigid Neural Implicit Shapes.

Official code release for ICCV 2021 paper SNARF: Differentiable Forward Skinning for Animating Non-rigid Neural Implicit Shapes.

null 235 Dec 26, 2022
[ICCV'21] UNISURF: Unifying Neural Implicit Surfaces and Radiance Fields for Multi-View Reconstruction

UNISURF: Unifying Neural Implicit Surfaces and Radiance Fields for Multi-View Reconstruction Project Page | Paper | Supplementary | Video This reposit

null 331 Dec 28, 2022
Volsdf - Volume Rendering of Neural Implicit Surfaces

Volume Rendering of Neural Implicit Surfaces Project Page | Paper | Data This re

Lior Yariv 221 Jan 7, 2023
Unofficial Tensorflow 2 implementation of the paper Implicit Neural Representations with Periodic Activation Functions

Siren: Implicit Neural Representations with Periodic Activation Functions The unofficial Tensorflow 2 implementation of the paper Implicit Neural Repr

Seyma Yucer 2 Jun 27, 2022