GNN学习笔记02 消息传递图神经网络
关于MessagePassing基类的具体分析参见开源学习地址:datawhale
1.MessagePassing基类的运行流程
谈到MessagePassing基类的运行流程,必须先简单介绍一下消息传递范式。简单来说,消息传递范式就是“消息”传递的过程,只是在GNN中,它传递的是邻接节点聚合信息,首先从离中心节点最远的节点开始传递,逐层更新节点信息,最后逼近中心节点,以中心节点的邻接节点聚合信息和中心节点的信息更新中心节点A的信息。最终所有节点的信息都更新了一遍。参见下图
“邻接节点信息传递到中心节点的过程”会进行多次,总的来说就是“变换-聚合-再变换”。而PyG的MessagePassing基类封装了“消息传递”的运行流程。通过继承MessagePassing基类,可以方便地构造消息传递图神经网络。MessagePassing基类的具体运行流程如下:
1.MessagePassing(aggr=“add”, flow=“source_to_target”, node_dim=-2)(对象初始化方法)
1)aggr:定义要使用的聚合方案(“add”、"mean "或 “max”);
2)flow:定义消息传递的流向("source_to_target "或 “target_to_source”);
3)node_dim:定义沿着哪个维度传播,默认值为-2。
2.MessagePassing.message(…)
首先确定要给节点 i i i传递消息的边的集合,接着为各条边创建要传递给节点 i i i的消息