DGL 消息传递机制详解

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值