Skip to contents

The normalisation is the design. A plain adjacency multiply lets high-degree nodes dominate and makes features explode over layers; D^-1/2 A D^-1/2 bounds the spectrum at one. The self-loop stops a node forgetting itself at every step.

Usage

Sgtgrn(A_hat, X, W, activation = "relu")

Arguments

A_hat

Adjacency; renormalised here, so pass the raw A.

X

Node features.

W

Layer weights.

activation

"relu" or "none".

Value

List with X_next, estimate, A_norm, n, f_out.

Details

Formula: X^(k+1) = sigma(A_hat X^(k) W^(k)), A_hat = Dt^-1/2 (A + I) Dt^-1/2.

References

Kipf, T. N. & Welling, M. (2017). ICLR 2017, equation (2).

Examples

A <- matrix(c(0, 1, 0, 1, 0, 1, 0, 1, 0), 3)
Sgtgrn(A, X = diag(3), W = matrix(1, 3, 2))$X_next
#>           [,1]      [,2]
#> [1,] 0.9082483 0.9082483
#> [2,] 1.1498299 1.1498299
#> [3,] 0.9082483 0.9082483