Question/possible bug with SIGNDiffusion transform
- Dominant language
- Python
- Stars
- 14.3k
- Forks
- 3.1k
- PR merge metrics
- No merged PRs in 30d
Description
In the [`SIGNDiffusion`](https://github.com/dmlc/dgl/blob/master/python/dgl/transforms/module.py#L1692) transform, the original [SIGN paper](https://arxiv.org/abs/2004.11198) is given for reference. I'm new to DGL, so my understanding could be wrong - but the implementation here seems partial. The original paper mentions 3 diffusion operators:
1. GCN-normalized (symmetric degree normalisation) - The implementation here seems correct
2. PPR-based - The implementation here uses [APPNP](https://arxiv.org/abs/1810.05997), an efficient choice. However, a couple of details seem inconsistent with the paper:
* the `k` parameter of the transform seems to control the iterations given for the PPR calculation, but in the paper it should control the powers of the converged PPR matrix (like how the gcn diffusion pattern is implemented).
* The implementation here uses the GCN-normalized adjacency matrix as the transition matrix, but it's likely that the authors of SIGN used a random-walk-normalized transition matrix.
3. Triangle-based - the implementation for this seems to be missing in DGL. To my understanding, this should be a matrix $A$ where entries $A_{ij}$ denote the number of triangles in the graph containing the edge $(i, j)$
Admittedly, the original authors of the paper didn't provide implementation details for 2) and 3).
Lastly, as more of a feature request, it would be useful for these diffusion operators to yield each the diffused features for each matrix power up to k, since the paper utilizes all of these and it would make applying SIGN more efficient.
Thanks in advance for any advice/help!
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.