First, of all, thanks so much for this amazing graph computing framework!! Can I ask questions about the mailbox for BatchNode?
In our experiment, we have a batch of graphs with different structures. We build a python list to contain those graphs, then construct BatchGraph using
dgl_bg = dgl.batch(batched_graphs), and feed it into our GCN model.
Here is the printed result of input graph feature(each line is a node representation),
edges.src['feat'](source node representation of each edge) and mailbox information of each nodes. The printing code defined in
According to my understanding, each line in
edges.src['feat'] should be the same as the corresponding line in mailbox. However, here, they are different from the printed result.
In addition, all my mailbox lines do not contain the source node representation. To prove this, I used one of the source node representations in function
gcn_msg, to test whether it exists in the the mailbox, but from the result(at the bottom in the following picture),
We can see that it is not contained in any mailbox row. So I am wondering why dgl just generates a random mailbox for me, instead of using the provided
edge.src['feat']? Another question is why the shape of mailbox is
torch.Size([148, 1, 50]) instead of
The following is my GCN related code