GeometricFlux.jl - Is there a true variable graph layer?

I’m looking into using https://github.com/yuehhua/GeometricFlux.jl. I notice that as per docs page https://yuehhua.github.io/GeometricFlux.jl/dev/basics/passgraph/, to pass a variable graph you need to define the GCNConv layer by passing in a FeaturedGraph . However, the FeaturedGraph is constructed by taking in an adjacency matrix, meaning that you need to know the graph structure before defining the GNN. Am I missing something and does functionality exist so that a given GNN can take in more than one kind of graph structure?

I think the message passing layer should work for any graphs. The docs are difficult to read for me. I have once digged deeper to compare the speed of message passing to my implementation (CPU only) based on Mill.jl (https://ctuavastlab.github.io/Mill.jl/dev/examples/graphs/) and it was working for any graph.

What did you pass in when defining the GCNConv layer? Was it just defined as any adjacency matrix? That seems a bit odd.

@Tomas_Pevny Sorry for the reading difficulty of documentation. There must be some room to improve.

@emsal When using a variable graph, you don’t need to give a FeaturedGraph to construct a GCNConv layer. Just use it as input for GCNConv layer. Use FeaturedGraph to contain your feature with different graph structure.

Thank you, that makes sense. Are there any significant effects that come from the choice of the initial adjacency matrix used to define the GCN layer?

If you would like a static graph, which means that you pass the same graph structure, to pass through your GNN model, I suggest using initialize GCN layer with a adjacency matrix. The normalized Laplacian matrix is pre-computed to reduce the computational effort.

1 Like