dgl
dgl
包包含用于存储结构和特征数据的数据结构(即 DGLGraph
类),以及用于生成、操作和转换图的工具。
图创建操作
用于从原始数据格式构建 DGLGraph
的操作符。
|
创建一个图并返回。 |
|
创建一个异构图并返回。 |
|
从 |
|
从 SciPy 稀疏矩阵创建一个图并返回。 |
|
从 NetworkX 图创建一个图并返回。 |
|
从 SciPy 稀疏矩阵创建一个单向二分图并返回。 |
|
从 NetworkX 图创建一个单向二分图并返回。 |
|
生成一个具有给定节点数/边数的随机图并返回。 |
|
生成一个随机单向二分图并返回。 |
|
根据 k 近邻 (KNN) 从一组点构造一个图并返回。 |
|
根据 k 近邻 (KNN) 从多组点构造多个图并返回。 |
|
从一组点构造一个图,其中邻居位于给定距离内。 |
|
创建一个消息流图 (MFG) 作为 |
|
将消息流图 (MFG)(一个 |
|
将图序列合并为一个图。 |
子图提取操作
用于提取和返回子图的操作符。
|
返回在给定节点上诱导的子图。 |
|
返回在给定边上诱导的子图。 |
|
返回在给定节点类型上诱导的子图。 |
|
返回在给定边类型上诱导的子图。 |
|
返回在给定节点所有边类型的入边上诱导的子图。 |
|
返回在给定节点所有边类型的出边上诱导的子图。 |
|
返回由指定节点 k 跳入邻居诱导的子图。 |
|
返回由指定节点 k 跳出邻居诱导的子图。 |
图转换操作
通过操作现有图的结构来生成新图的操作符。
|
向图中添加边并返回一个新图。 |
|
向图中添加给定数量的节点并返回一个新图。 |
|
为输入图中的每条边添加一条反向边并返回一个新图。 |
|
为图中的每个节点添加自环并返回一个新图。 |
|
创建一个加权图,其邻接矩阵是给定两个图的邻接矩阵的乘积。 |
|
创建一个加权图,其邻接矩阵是给定图的邻接矩阵之和,其中行代表源节点,列代表目标节点。 |
|
给定一组具有相同节点集的图,找到并消除所有图中共同的孤立节点。 |
|
返回矩阵 \(A^k\),其中 \(A\) 是图 \(g\) 的邻接矩阵。 |
|
返回一个图,其边连接原始图的 |
|
根据 k 近邻 (KNN) 从一组点构造一个图并返回。 |
返回图的归一化对称拉普拉斯矩阵的最大特征值。 |
|
|
返回此图的线图。 |
|
返回一个图,其中任何节点 |
|
这是使用 Metis 分割算法对图进行分区。 |
|
这使用 Metis 分割算法将节点分配到不同的分区。 |
|
基于目标节点度计算每条边的归一化系数。 |
|
对图进行分区。 |
|
从一组点构造一个图,其中邻居位于给定距离内。 |
|
移除指定的边并返回一个新图。 |
|
移除指定的节点并返回一个新图。 |
|
移除图中每个节点的自环并返回一个新图。 |
|
返回一个新图,其节点和边根据指定的排列算法进行重新排序/重新标注。 |
|
返回一个新图,其中每条边都是输入图中的反向边。 |
|
根据 k 近邻 (KNN) 从多组点构造多个图并返回。 |
|
返回一个新图,其 CSR 矩阵按给定标签排序。 |
|
返回一个新图,其 CSC 矩阵按给定标签排序。 |
|
将图转换为双向简单图并返回。 |
|
将图转换为双向结构的 block 用于消息传递。 |
|
将 DGL 图转换为 |
|
将此图的任何浮点边和节点特征数据转换为 float64(双精度)。 |
|
将此图的任何浮点边和节点特征数据转换为 float32(单精度)。 |
|
将此图的任何浮点边和节点特征数据转换为 float16(半精度)。 |
|
将同构图转换为异构图并返回。 |
|
将异构图转换为同构图并返回。 |
|
将图转换为 NetworkX 图并返回。 |
|
将图转换为没有平行边的简单图并返回。 |
将图转换为没有多重边的简单图。 |
图位置编码操作:
用于生成每个节点位置编码的操作符。
|
随机游走位置编码,如论文 Graph Neural Networks with Learnable Structural and Positional Representations 中介绍。 |
|
拉普拉斯位置编码,如论文 Benchmarking Graph Neural Networks 中介绍。 |
|
双半径节点标注,如论文 Link Prediction Based on Graph Neural Networks 中介绍。 |
|
计算给定图上的最短距离和路径。 |
|
基于 SVD 的位置编码,如论文 Global Self-Attention as a Replacement for Graph Convolution 中介绍。 |
图分区工具
|
这是使用 Metis 分割算法对图进行分区。 |
|
这使用 Metis 分割算法将节点分配到不同的分区。 |
|
对图进行分区。 |
批量处理与读出操作
用于将多个图批量处理成一个图的操作符,以及用于计算单个图和批量图的图级别表示的操作符。
|
将一组 |
|
通过将给定图分割成小图列表来撤销批量操作。 |
|
从一批图中获取特定的图。 |
|
通过聚合节点特征 |
|
对 |
|
|
|
|
|
|
|
|
|
|
|
|
|
对节点特征执行图级别 softmax。 |
|
对边特征执行图级别 softmax。 |
|
生成一个等于图级别特征 |
|
生成一个等于图级别特征 |
|
通过对 |
|
通过对 |
图遍历与消息传播
DGL 实现了图遍历算法,这些算法实现为 python 生成器,在每次迭代时返回访问过的节点集或边集(以 ID 张量形式)。命名约定是 <algorithm>_[nodes|edges]_generator
。一个使用示例如下。
g = ... # some DGLGraph
for nodes in dgl.bfs_nodes_generator(g, 0):
do_something(nodes)
|
使用广度优先搜索生成节点前沿。 |
|
使用广度优先搜索生成边前沿。 |
|
使用拓扑遍历生成节点前沿。 |
|
使用深度优先搜索 (DFS) 生成边前沿。 |
|
生成按类型标注的深度优先搜索 (DFS) 中的边。 |
DGL 提供了 API,可按照图遍历顺序执行消息传递。prop_nodes_XXX
调用遍历算法 XXX
,并在每次迭代时对访问过的节点集触发 pull()
。prop_edges_YYY
应用遍历算法 YYY
,并在每次迭代时对访问过的边集触发 send_and_recv()
。
|
|
|
使用 BFS 生成的节点前沿进行消息传播。 |
|
使用拓扑顺序生成的节点前沿进行消息传播。 |
|
|
|
使用标注的 DFS 生成的边前沿进行消息传播。 |
同配性度量
用于度量图同配性的工具
|
来自论文 Beyond Homophily in Graph Neural Networks: Current Limitations and Effective Designs 的同配性度量 |
|
来自论文 Geom-GCN: Geometric Graph Convolutional Networks 的同配性度量 |
|
来自论文 Large Scale Learning on Non-Homophilous Graphs: New Benchmarks and Strong Simple Methods 的同配性度量 |
|
论文 Characterizing Graph Datasets for Node Classification: Homophily-Heterophily Dichotomy and Beyond 中推荐的同配性度量 |
标签信息量度量
用于度量图标签信息量的工具
|
标签信息量(\(\mathrm{LI}\))是标注图的一个特征,在论文 Characterizing Graph Datasets for Node Classification: Homophily-Heterophily Dichotomy and Beyond 中提出。 |
|
标签信息量(\(\mathrm{LI}\))是标注图的一个特征,在论文 Characterizing Graph Datasets for Node Classification: Homophily-Heterophily Dichotomy and Beyond 中提出。 |
工具集
其他用于控制随机性、保存和加载图、设置和获取运行时配置、将相同函数应用于容器中每个元素的函数等工具。
|
设置 DGL 的随机种子。 |
|
将图及其可选的标签保存到文件。 |
|
从 |
|
将函数应用于容器中的每个元素。 |
|
设置 DGL 是否在运行时使用 libxsmm。 |
获取 use_libxsmm 标志是否开启。 |