关注微信公众号【七步编程】,专注Python、AI、大数据,原创文章第一时间推送!
之前有过两篇文章分别介绍了GCN模型PinSage和图神经网络框架DGL,本文就利用DGL来逐步实现PinSage模型,让熟悉DGL的使用过程中加深对PinSage的理解。
前言
上次的帖子分析了DGL这个框架,最后的地方提到DGL给出的示例中并不是所有的模型都是用消息传递的方式来编写的,比如著名的推荐模型PinSage,正巧这个模型在去年的帖子中也有过介绍(可见我这个人有多么拖沓,早就应该介绍模型实现,竟然拖了一年),PinSage并没有官方开源代码,所以这次就介绍一下DGL的实现方式,也给其他小伙伴一些启示吧。
如果对PinSage模型不太熟悉的,可以查看之前的一篇文章:PinSage:GCN在商业推荐系统首次成功应用
PinSage
首先模型在DGL项目的位置是:examples/pytorch/recommendation。模型是基于movielens数据集(https://grouplens.org/datasets/movielens/)实现的,数据中包含用户id,电影id,电影名字,时间戳,用户对电影评分等。DGL将数据集中用户和电影看作两种类型的节点,评分做为边,构成了用户和电影之间的二分图。大家都知道,在图神经网路中,节点的初始特征是十分重要的,而DG