Skip to content

Implement Group Equivariant Convolutions

Created by: chrisrothUT

I plan to implement group equivariant convolutions as described in: http://proceedings.mlr.press/v48/cohenc16.pdf

This requires access to the algebra of the lattice symmetry group in order to map from convolution filters of shape [out_filters, in_filters, n_group] to a linear map [out_filtersn_group, in_filtersn_group].

My current plan is to add a property to Graph called group_algebra which is a tensor [n_group, n_group, n_group] that maps from absolute to relative poses. It will return None aside from a few graphs where I will manually implement it for.

We also need to modify DenseSymm (which would be the first layer) so that it can output the graph isomorphisms in a particular order; right now it just uses the order NetworkX generates them in.

As an aside, isomorphisms_iter() may have some bugs. See the following code:

g = nk.graph.Hypercube(length=4, n_dim=2, pbc=True) print(len(g.automorphisms()))

I get 384 when it should be 128.