dgl
dgl
包包含用于存储结构和特征数据的数据结构
(即 DGLGraph
类),以及用于生成、操作
和转换图的实用工具。
图形创建操作
用于从原始数据格式构建DGLGraph
的操作符。
|
创建一个图形并返回。 |
|
创建一个异构图并返回。 |
|
Create a graph from a |
|
从SciPy稀疏矩阵创建图形并返回。 |
|
从NetworkX图创建一个图并返回。 |
|
从SciPy稀疏矩阵创建一个单向二分图并返回。 |
|
从NetworkX图创建一个单向二分图并返回。 |
|
生成一个具有给定节点/边数的随机图并返回。 |
|
生成一个随机的单向二分图并返回。 |
|
根据k-最近邻(KNN)从一组点构建图并返回。 |
|
根据k近邻(KNN)从多组点构建多个图并返回。 |
|
从一组点中构建一个图,这些点的邻居在给定距离内。 |
|
Create a message flow graph (MFG) as a |
|
Convert a message flow graph (MFG) as a |
|
将一系列图形合并成一个单一的图形。 |
子图提取操作
用于提取和返回子图的操作符。
|
返回在给定节点上诱导的子图。 |
|
返回在给定边上诱导的子图。 |
|
返回由给定节点类型诱导的子图。 |
|
返回由给定边类型诱导的子图。 |
|
返回由给定节点的所有边类型的入边所诱导的子图。 |
|
返回由给定节点的所有边类型的出边诱导的子图。 |
|
返回由指定节点的k跳入邻域诱导的子图。 |
|
返回由指定节点的k跳出邻域诱导的子图。 |
图变换操作
通过操作现有图的结构来生成新图的运算符。
|
将边添加到图中并返回一个新图。 |
|
向图中添加给定数量的节点并返回一个新图。 |
|
为输入图中的每条边添加一条反向边,并返回一个新图。 |
|
为图中的每个节点添加自环并返回一个新图。 |
|
创建一个加权图,其邻接矩阵是给定两个图的邻接矩阵的乘积。 |
|
创建一个加权图,其邻接矩阵是给定图的邻接矩阵之和,其中行表示源节点,列表示目标节点。 |
|
给定一组具有相同节点集的图,找出并消除所有图中共同的孤立节点。 |
|
返回矩阵 \(A^k\),其中 \(A\) 是图 \(g\) 的邻接矩阵。 |
|
Return the graph whose edges connect the |
|
根据k-最近邻(KNN)从一组点构建图并返回。 |
返回图的归一化对称拉普拉斯矩阵的最大特征值。 |
|
|
返回此图的线图。 |
|
返回一个图,其中任何节点 |
|
这是使用Metis分区对图进行分区。 |
|
这使用Metis分区算法将节点分配到不同的分区。 |
|
基于目标节点度计算每条边的归一化系数。 |
|
对图进行分区。 |
|
从一组点中构建一个图,这些点的邻居在给定距离内。 |
|
移除指定的边并返回一个新图。 |
|
移除指定的节点并返回一个新图。 |
|
移除图中每个节点的自环并返回一个新图。 |
|
返回一个新图,其中节点和边根据指定的排列算法重新排序/重新标记。 |
|
返回一个新图,其中每条边都是输入图中边的反向。 |
|
根据k近邻(KNN)从多组点构建多个图并返回。 |
|
返回一个新的图,其CSR矩阵按给定的标签排序。 |
|
返回一个新图,其CSC矩阵按给定标签排序。 |
|
将图转换为双向简单图并返回。 |
|
Convert a graph into a bipartite-structured block for message passing. |
|
Convert a DGL graph to a |
|
将此图转换为使用 float64(双精度)来处理任何浮点边和节点特征数据。 |
|
将此图转换为使用 float32(单精度)来处理任何浮点边和节点特征数据。 |
|
将此图转换为使用float16(半精度)来处理任何浮点边和节点特征数据。 |
|
将同构图转换为异构图并返回。 |
|
将异构图转换为同构图并返回。 |
|
将图转换为NetworkX图并返回。 |
|
将图转换为没有平行边的简单图并返回。 |
将图转换为没有多重边的简单图。 |
图位置编码操作:
用于生成每个节点的位置编码的操作符。
|
Random Walk Positional Encoding, as introduced in Graph Neural Networks with Learnable Structural and Positional Representations |
|
Laplacian Positional Encoding, as introduced in Benchmarking Graph Neural Networks |
|
双半径节点标签,如基于图神经网络的链接预测中所述。 |
|
计算给定图上的最短距离和路径。 |
|
SVD-based Positional Encoding, as introduced in Global Self-Attention as a Replacement for Graph Convolution |
图分区工具
|
这是使用Metis分区对图进行分区。 |
|
这使用Metis分区算法将节点分配到不同的分区。 |
|
对图进行分区。 |
批处理和读取操作
用于将多个图批量处理为一个图的运算符,以及用于计算单个图和批量图的图级表示的运算符。
|
将一组 |
|
通过将给定的图拆分为一系列小图来撤销批处理操作。 |
|
从一批图中获取特定的图。 |
|
通过聚合节点特征 |
|
在 |
|
Syntax sugar for |
|
Syntax sugar for |
|
Syntax sugar for |
|
Syntax sugar for |
|
Syntax sugar for |
|
Syntax sugar for |
|
对节点特征执行图级别的softmax。 |
|
对边缘特征执行图级别的softmax。 |
|
Generate a node feature equal to the graph-level feature |
|
Generate an edge feature equal to the graph-level feature |
|
通过在 |
|
通过在图 |
图遍历与消息传播
DGL 实现了图遍历算法,这些算法作为 Python 生成器实现,每次迭代返回访问过的节点或边的集合(以 ID 张量形式)。命名约定为
。以下是一个使用示例。
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()
。
|
Functional method for |
|
使用BFS生成的节点前沿进行消息传播。 |
|
使用由拓扑顺序生成的节点前沿进行消息传播。 |
|
Functional method for |
|
使用由标记DFS生成的边缘前沿进行消息传播。 |
同质性测量
用于测量图的同质性的实用工具
|
同质性测量来自 Beyond Homophily in Graph Neural Networks: Current Limitations and Effective Designs |
|
|
|
同质性测量来自 非同质性图上的大规模学习:新基准和强大的简单方法 |
|
在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中提出的标记图的一个特征。 |
Utilities
其他用于控制随机性、保存和加载图形、设置和获取运行时配置的实用工具,以及将相同函数应用于容器中每个元素的函数等。
|
设置DGL的随机种子。 |
|
将图形及其标签(可选)保存到文件。 |
|
Load graphs and optionally their labels from file saved by |
|
对容器中的每个元素应用一个函数。 |
|
设置DGL在运行时是否使用libxsmm。 |
获取是否打开了use_libxsmm标志。 |