传递 class 的消息中的 `node_dim` 参数指的是什么?

What is the `node_dim` argument referring to in the message passing class?

在 PyTorch 几何 tutorial for creating Message Passing Networks 中,他们在解释 class 的作用时在开头有这一段:

MessagePassing(aggr="add", flow="source_to_target", node_dim=-2): Defines the aggregation scheme to use ("add", "mean" or "max") and the flow direction of message passing (either "source_to_target" or "target_to_source"). Furthermore, the node_dim attribute indicates along which axis to propagate.

我不明白这个node_dim指的是什么,为什么是-2。我查看了 the documentationMessagePassing class 并且它在那里说它是要传播的轴 - 这仍然没有真正阐明我们在这里做什么以及为什么默认值为 -2(大概这就是您在节点级别传播信息的方式)。有人可以给我一些解释吗?

参考here and here后,我觉得和它相关的是'message'函数的输出
在大多数情况下,输出的形状是 [edge_num, emb_out],如果我们将 node_dim 设置为 -2,这意味着我们将使用目标节点的索引沿着 edge_num 聚合。
这正是从源节点聚合信息的过程。
聚合后的结果为[node_num, emb_out].