- homogeneous graph : 一种节点,一种边
- heterogeneous graph: 多种节点,多种边
- bipartite graph : 两种节点,一种边
1、DGLgraph结构
1.1 同构图
Cora论文关系图–同构图(homogeneous)
(1)节点:2708篇论文,节点特征表示每个论文有是否出现1433个关键词中信息;节点标签表示每个论文所述的7个类别之一。
(2)边:10556个论文引用论文的关系,此外没有边的特征信息
|
|
- 节点信息
|
|
- 边的信息
|
|
- 从头创建一个同构图
|
|
1.2 异构图
假设存在药物,蛋白两种节点的异构图,其中有药物-蛋白、药物-药物、蛋白-蛋白3种边
|
|
- 节点信息
|
|
- 边的类型
|
|
1.3 其它操作
- 单向→双向
|
|
- 自己与自己
|
|
- 保存与加载图
|
|
- 更多
(1)图信息查询 https://docs.dgl.ai/api/python/dgl.DGLGraph.html#apigraph-querying-graph-structure
(2)图信息修改 https://docs.dgl.ai/api/python/dgl.html#api-subgraph-extraction
2、从文件读入DGL
|
|
根据同构图与异构图,文件夹需要准备不同的文件
2.1 同构图
需要包含以下3个文件
- meta.yaml:指定边文件与节点文件
|
|
- nodes.csv:节点csv文件
|
|
- edges.csv:边csv文件
|
|
2.2 异构图
假设2种节点、2种边,需要包含以下2种文件
- meta.yaml:指定边文件与节点文件
|
|
- 边csv文件:edges_0.csv or edges_1.csv
|
|
- 节点csv文件:nodes_0.csv or nodes_1.csv
|
|
3、GNN模型
3.1 GNN层结构
- GNN的核心是根据邻居信息更新节点特征,更新算法有GCN、Graphsage、GAT…
- 根据预测目的,GNN可分为节点分类、回归,边的分类、回归,边是否存在的预测
- 关于边相关预测,本质上是使用两端节点信息作为边的特征信息
- 关于多层GNN的结构,大体如下:
- 1层的GNN:考虑邻居节点的信息
- 2层的GNN:考虑邻居以及邻居的邻居信息
3.2 sampler与batch模式
默认情况下,一轮epoch,GNN会考虑所有节点的所有邻居信息。
- sampler模式:在具体的某一层GNN中,只考虑节点的有限个邻居
- batch模式:将训练集样本划分为多个小样本集,每个小样本集单独训练。
在设置sampler与batch模式下,每个小样本集的每一层GNN称之为block