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!