-
Notifications
You must be signed in to change notification settings - Fork 558
Euler 2.0 进阶教程总览
origin edited this page Jun 28, 2020
·
3 revisions
在进阶教程这一大章,我们将介绍如何利用Euler-2.0来构建图表示学习算法来处理不同的图场景和介绍如何利用Euler2.0的新功能(点和边的属性索引)来满足用户的个性化需求。
在本章将介绍以下几部分内容:
总共介绍六钟不同的图场景以及一个利用属性索引的个性化需求场景。
每一部分内容分别用一个或几个实际例子来介绍如何使用Euler2.0来处理对应的场景。
为了让用户能够更好的理解如何Euler2.0来构建图模型,这里对本章所介绍的六种不同图场景下,使用例子之间联系和区别做一个总结。
无属性图 | 有属性图 | 异质图 | 知识图谱 | 图分类 | 大规模图 | ||||
---|---|---|---|---|---|---|---|---|---|
算法 | GraphSAGE | GraphSAGE | R-GCN | TransE | DGCNN | 不同类型图不同算法,不具体介绍 | |||
原始图数据 | Cora(不考虑节点属性) | Cora | Wn18 | fb15k | MUTAG | 可以用于不同类型图,不具体介绍 | |||
数据准备 | 图json文件 | 节点除了类别以外没有其他的属性 | 节点有丰富的属性特征 | 节点和边的种类多样,其中节点无属性,边的属性为节点对的关系类型 | 节点和边的种类多样,其中节点无属性,边的属性为节点对的关系类型 | 将多张图合成一张大图,在生成大图的JSON文件的时候,在JSON中添加每一个节点属于哪一张图的标识属性(即graph_label)来区分不同图中的节点 | 对JSON文件进行切分,形成多个JSON文件,以解决图数据量大的问题 | ||
索引meta | 由于是无属性图,无法构建属性索引 | 可以构建索引,本例子暂时不利用索引,即meta为None | 可以构建索引,本例子暂时不利用索引,即meta为None | 可以构建索引,本例子暂时不利用索引,即meta为None | 定义基于graph_label来建立属性索引,以此来快速找到同一个图中的所有节点 | 所有的JSON文件共用一个meta文件,无需切分 | |||
图数据二进制文件生成 | 使用Euler2.0 python工具进行转化 | 使用Euler2.0 python工具进行转化 | 使用Euler2.0 python工具进行转化 | 使用Euler2.0 python工具进行转化 | 使用Euler2.0 python工具进行转化 | 利用项目根目录下的euler/tools/gen_partitioned_data.sh进行转化 | |||
模型实现 | 图神经网络 | 实现GNN Encoder | 继承基类 | BaseGNNNet | BaseGNNNet | BaseGNNNet | BaseGNNNet | 与小图实现算法一样,无需做任何改变 | |
to_x() | 节点初始化(h0) embedding通过节点id 映射的embedding table得到 | 节点初始化(h0) embedding通过节点dense属性得到 | 节点初始化(h0) embedding通过节点id 映射的embedding table得到 | 节点初始化(h0) embedding通过节点sparse 特征映射的embedding table得到 | |||||
to_edge() | 边初始化embedding通过边的dense属性得到 | ||||||||
实现GNN模型 | 继承基类 | SuperviseModel | SuperviseModel | UnsuperviseModel | GraphModel | ||||
embedding获取 | 通过GNN encoder 获取节点embedding | 通过GNN encoder 获取节点embedding | 通过GNN encoder 获取节点以及context的embedding | 通过GNN encoder 获取节点embeding再通过graph pool获取graph embedding | |||||
dataflow | sage | sage | relation | full | |||||
convolution | sage | sage | relation | gcn | |||||
图嵌入表达 | 继承基类 | TransX | |||||||
实现模型 | generate_embedding()和loss_fn()方法的实现 | ||||||||
模型训练 | 模式 | 单机 | 单机 | 单机 | 单机 | 单机 | 分布式(启动euler,初始化euler引擎) | ||
Estimator | NodeEstimator | NodeEstimator | Node |