DGL 消息传递机制详解

本文详细介绍了DGL库中的消息传递机制,该机制是图神经网络(GNN)的核心。消息传递包括消息函数和汇聚函数两个步骤:消息函数将节点和边的Embedding传递到目标节点的邮箱;汇聚函数则负责整合邻居消息并更新节点的Embedding。这一过程用于节点特征的迭代更新,从而实现图数据的学习。
摘要由CSDN通过智能技术生成

DGL 核心 — 消息传递

 

DGL中的消息传递,大家通常知其然不知所以然。在看完GCN的公式后,会出现这样的疑问: 矩阵运算在哪 ?D波浪和A波浪在哪 ?

GCN公式: https://www.cnblogs.com/denny402/p/10917820.html

 

下文详细解释了这个背后的机制:

 

DGL 的核心为消息传递机制(message passing),主要分为消息函数 (message function)和汇聚函数(reduce function)。如下图所示:

图片

  • 消息函数(message function):传递消息的目的是将节点计算时需要的信息传递给它,因此对每条边来说,每个源节点将会将自身的Embedding(e.src.data)和边的Embedding(edge.data)传递到目的节点;对于每个目的节点来说,它可能会受到多个源节点传过来的消息,它会将这些消息存储在"邮箱"中。

  • 汇聚函数(reduce function):汇聚函数的目的是根据邻居传过来的消息更新跟新自身节点Embedding,对每个节点来说,它先从邮箱(v.mailbox['m'])中汇聚消息函数所传递过来的消息(message),并清空邮箱(v.mailbox['m'])内消息;然后该节点结合汇聚后的结果和该节点原Embedding,更新节点Embedding。

 

更新:  message函数的参数是边,包括源节点,目标节点的特征信息,处理完的数据放置到节点的mailbox中。  聚合函数reduce_function或  apply_node函数作用于节点本身,即传入的参数是节点信息和节点的邮箱信息。

原始出处: https://mp.weixin.qq.com/s?__biz=MzIyNjM2MzQyNg==&mid=2247544576&idx=2&sn=bb912ea385f319b708658dcadbeb4f01&chksm=e873fe4ddf04775b5d64889a3e1ed7350159b527a094c07f2c4fb3b96eabf0ff773bb1f8609d&scene=178&cur_album_id=1600877474559639556#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值