GeometricFlux: GCNConv but with different graphs

I’m working with GeometricFlux and want to adapt the GCNConv layer to allow for different adjacency matrices corresponding to each piece of training data. Since this now requires two separate “streams” of input data (the adjacency matrices and the set of node features corresponding to each graph), I’m wondering about any best practices for dealing with this type of input. Most of the Flux examples I’ve seen have just one vector (or matrix) as the input. Anything particular I should be keeping in mind?

Hi, Im working on a similar problem and wondering if you were able to successfully adapt the layer?

Yes. Unfortunately the solution I have is currently closed-source because of silly academia funding/IP things, but we plan to open-source it once we publish the paper, hopefully in the next couple months. In the meantime, check out the FeaturedGraph type in GeometricFlux (may be only in master branch currently, not sure); that’s what I’m using as input to the layer.

The main conceptual thing to keep in mind in adapting it (if you want to make your own in the meantime) is that the bias terms will not be able to be trainable per-node since the number of input nodes in the graph can vary, so you can only train it per-feature. If you want to know when it comes out, I’d suggest you keep an eye on this Github org, as this is where it will be published: https://github.com/aced-differentiate

@rkurchin Thanks! This FeaturedGraph type is extremely helpful for my use case. Did you have any trouble computing the gradients when using this type combined with the GCNConv layer? I seem to get the following method error:

MethodError: no method matching (::GeometricFlux.var"#adjacency_matrix#76")(::FeaturedGraph{Array{Float64,2},Adjoint{Float64,Array{Float64,2}},Array{Float64,2},Array{Float64,1}})

Yeah, we did end up having to define a custom adjoint for that but I think you may have to wait until our paper comes out to see it. Sorry our funder is so ornery about this! We definitely will open-source it eventually, just have to follow a bunch of rules first…

@rkurchin Totally understand, thanks! :slight_smile:

1 Like