A Pytorch implementation of Semi-Implicit Graph Variational Auto-Encoders.
The work is programed with python3/3.6.3 and torch 1.4.0
We had a minor adjustment on the encoder structure, namely, instead of using individual network branches to produce mu and sigma, we let them share the first hidden layer. This update on the encoder cuts down redundant network weights and improves the model performance. The options of encoder structure is coded up in the argument "encsto", the encoder stochasticity. Set it to 'full' to inject randomness into both mu and sigma, and produces different sigma for all (K+J) outputs. Set it to 'semi' so that sigma is produced deterministically from node features.
For example, run sigvae-torch on cora dataset with bernoulli-poisson decoder, and semi-stochastic encoder with the following command
>>>python train.py --dataset-str cora --gdc bp --encsto semi
The arguments are default to ones that yield optimal results.
This work is developed from https://github.com/zfjsail/gae-pytorch, thank you @zfjsail for sharing! Also appreciate the technical support from @Chaojie.