Convolution Modules for Heterographs

I have implemented a heterograph with different node and edge types, and all node types have an individual feature matrix of different sizes. Now I am trying to implement a ‘HeteroGraphConv’ as described here.

My question now is which convolution module to use now for each edge type. Previously, I have been planning on using the RelGraphConv as different edge types are allowed here.
When I define a convolutional layer for each edge type, would it still be necessary to use the RelGraphConv? I am considering hereby the regularisation methods that are applicable. I would also like to ask if the block-diagonal-decomposition would still be useful in this case if no more than one edge type is considered in a convolution.
Would it be sufficient in this case to use the GraphConv module?

Thank you in advance.

RelGraphConv will not be necessary if you implement a HeteroGraphConv as you can treat each subgraph induced on an edge type as a homogeneous graph and you can use a different convolutional layer for each of them. In fact, using GraphConv or SAGEConv for HeteroGraphConv is almost RelGraphConv.

As for regularization with block-diagonal-decomposition(BDD), it is still applicable in this case. In BDD regularization of RGCN, we do not share parameters across relations. Rather, the intuition is that latent features can be grouped into sets of variables which are more tightly coupled within groups than across groups.

1 Like

Thank you @mufeili, this answer was helpful.

As for the second question about the block-diagonal-decomposition, I’d like to ask if you mean that the BDD could also be applied with the GraphConv or just the RelGraphConv?

It’s possible to develop a variant of GraphConv with BDD, but currently we do not have built-in support for that and you will need to develop that yourself.

All right, thank you for the info!