I’m looking at a broad class of graph neural network update operations defined as follows:
for each edge `k` connecting vertices `s` and `r`
ē_k = ϕ_e(concat(v_s, v_r, e_k))
for each node `i`
v_{i, e} = Pool({ē_k : k ∈ E(i)})
v̄_i = ϕ_v(concat(v_{i, e}, v_i))
where e_k is the embedding of edge k, and ē_k is its update, v_i is the embedding of node i and v̄_i is its update, E(i) is the set of edges that lead into node i, and ϕ_e and ϕ_v are MLPs. This update is similar to one used for materials modeling here: https://doi.org/10.1021/acs.chemmater.9b01294
Is the functionality needed for an update like this currently available in GraphNeuralNetworks.jl? If not, are there any pointers on what functions would be needed to implement it?
Thanks!