dgl.DGLGraph

class dgl.DGLGraph[源码]

用于存储图结构和节点/边特征数据的类。

有几种方法可以创建一个 DGLGraph

  • 要从 Tensor 数据创建同构图,请使用 dgl.graph()

  • 要从 Tensor 数据创建异构图,请使用 dgl.heterograph()

  • 要从其他数据源创建图,请使用 dgl.* 创建操作。请参阅 图创建操作

请阅读用户指南章节 第一章:图,了解其用法的深入解释。

查询元图结构

获取节点和边类型信息的方法。当图是异构图时,这些方法通常很有用。

DGLGraph.ntypes

返回图中的所有节点类型名称。

DGLGraph.etypes

返回图中的所有边类型名称。

DGLGraph.srctypes

返回此图中的所有源节点类型名称。

DGLGraph.dsttypes

返回此图中的所有目标节点类型名称。

DGLGraph.canonical_etypes

返回图中的所有规范边类型。

DGLGraph.metagraph()

返回异构图的元图。

DGLGraph.to_canonical_etype(etype)

将边类型转换为图中的相应规范边类型。

查询图结构

获取图结构信息的方法,例如容量、连通性、邻域等。

DGLGraph.num_nodes([ntype])

返回图中的节点数。

DGLGraph.number_of_nodes([ntype])

num_nodes() 的别名

DGLGraph.num_edges([etype])

返回图中的边数。

DGLGraph.number_of_edges([etype])

num_edges() 的别名

DGLGraph.num_src_nodes([ntype])

返回图中的源节点数。

DGLGraph.number_of_src_nodes([ntype])

num_src_nodes() 的别名

DGLGraph.num_dst_nodes([ntype])

返回图中的目标节点数。

DGLGraph.number_of_dst_nodes([ntype])

num_dst_nodes() 的别名

DGLGraph.is_unibipartite

返回图是否是单二分图。

DGLGraph.is_multigraph

返回图是否是包含并行边的多重图。

DGLGraph.is_homogeneous

返回图是否是同构图。

DGLGraph.has_nodes(vid[, ntype])

返回图是否包含给定的节点。

DGLGraph.has_edges_between(u, v[, etype])

返回图是否包含给定的边。

DGLGraph.predecessors(v[, etype])

返回具有指定边类型的特定节点的前驱节点。

DGLGraph.successors(v[, etype])

返回具有指定边类型的特定节点的后继节点。

DGLGraph.edge_ids(u, v[, return_uv, etype])

给定边的两个端点,返回边 ID。

DGLGraph.find_edges(eid[, etype])

给定边 ID,返回源节点和目标节点的 ID。

DGLGraph.in_edges(v[, form, etype])

返回给定节点的入边。

DGLGraph.out_edges(u[, form, etype])

返回给定节点的出边。

DGLGraph.in_degrees([v, etype])

返回给定节点的入度。

DGLGraph.out_degrees([u, etype])

返回给定节点的出度。

查询和操作稀疏格式

用于获取或操作 DGLGraph 内部存储格式的方法。

DGLGraph.formats([formats])

获取一个具有指定允许的稀疏格式的克隆图,或查询稀疏格式的使用状态。

DGLGraph.create_formats_()

创建图允许的所有稀疏矩阵。

查询和操作节点/边的 ID 类型

用于获取或操作存储结构相关数据(例如节点和边 ID)的数据类型的方法。

DGLGraph.idtype

用于存储结构相关图信息(例如节点和边 ID)的数据类型。

DGLGraph.long()

将图转换为 idtype 为 int64 的图

DGLGraph.int()

将图转换为 idtype 为 int32 的图

使用节点/边特征

用于获取或设置存储结构相关数据(例如节点和边 ID)的数据类型的方法。(注意:此描述可能与章节标题不完全匹配,但已按原文翻译)

DGLGraph.nodes

返回一个节点视图

DGLGraph.ndata

返回一个节点数据视图,用于设置/获取节点特征

DGLGraph.edges

返回一个边视图

DGLGraph.edata

返回一个边数据视图,用于设置/获取边特征。

DGLGraph.node_attr_schemes([ntype])

返回指定类型的节点特征方案。

DGLGraph.edge_attr_schemes([etype])

返回指定类型的边特征方案。

DGLGraph.srcnodes

返回源节点的节点视图

DGLGraph.dstnodes

返回目标节点的节点视图

DGLGraph.srcdata

返回一个节点数据视图,用于设置/获取源节点特征。

DGLGraph.dstdata

返回一个节点数据视图,用于设置/获取目标节点特征。

图变换

通过转换现有图来生成新图的方法。它们大多数是 dgl 命名空间下的 子图提取操作图变换操作 的别名。

DGLGraph.subgraph(nodes, *[, relabel_nodes, ...])

dgl.node_subgraph() 的别名。

DGLGraph.edge_subgraph(edges, *[, ...])

dgl.edge_subgraph() 的别名。

DGLGraph.node_type_subgraph(ntypes[, ...])

dgl.node_type_subgraph() 的别名。

DGLGraph.edge_type_subgraph(etypes[, ...])

dgl.edge_type_subgraph() 的别名。

DGLGraph.__getitem__(key)

返回此图的关系切片。

DGLGraph.line_graph([backtracking, shared])

dgl.line_graph() 的别名。

DGLGraph.reverse([copy_ndata, copy_edata, ...])

dgl.reverse() 的别名。

DGLGraph.add_self_loop([edge_feat_names, ...])

dgl.add_self_loop() 的别名。

DGLGraph.remove_self_loop([etype])

dgl.remove_self_loop() 的别名。

DGLGraph.to_simple([return_counts, ...])

dgl.to_simple() 的别名。

DGLGraph.to_cugraph()

将 DGL 图转换为 cugraph.Graph 并返回。

DGLGraph.reorder_graph([node_permute_algo, ...])

dgl.reorder_graph() 的别名。

邻接矩阵和关联矩阵

获取图的邻接矩阵和关联矩阵的方法。

DGLGraph.adj([etype, eweight_name])

获取图的邻接矩阵。

DGLGraph.adjacency_matrix([etype])

adj() 的别名

DGLGraph.adj_tensors(fmt[, etype])

将给定边类型的邻接矩阵作为稀疏矩阵表示的张量返回。默认情况下,返回的邻接矩阵的一行表示边的源节点,一列表示目标节点。 :param fmt: coo, csrcsc 之一。 :type fmt: str :param etype: 边的类型名称。允许的类型名称格式包括: * (str, str, str) 表示源节点类型、边类型和目标节点类型。 * 如果名称可以唯一标识图中的三元组格式,则可以使用一个 str 边类型名称。如果图只有一种边类型,则可以省略此参数。 :type etype: str 或 (str, str, str),可选。

DGLGraph.adj_external([transpose, ctx, ...])

以外部格式(例如 Scipy 或依赖于后端的稀疏张量)返回邻接矩阵。

DGLGraph.inc(typestr[, ctx, etype])

返回具有给定边类型的边的关联矩阵表示。

DGLGraph.incidence_matrix(typestr[, ctx, etype])

返回具有给定边类型的边的关联矩阵表示。

使用 DGLGraph 计算

执行消息传递、在节点/边特征上应用函数等方法。

DGLGraph.apply_nodes(func[, v, ntype])

使用提供的函数更新指定节点的特征。

DGLGraph.apply_edges(func[, edges, etype])

使用提供的函数更新指定边的特征。

DGLGraph.send_and_recv(edges, message_func, ...)

沿着指定的边发送消息,并在目标节点上聚合这些消息以更新其特征。

DGLGraph.pull(v, message_func, reduce_func)

沿着指定的边类型从指定节点的前驱节点拉取消息,聚合这些消息以更新节点特征。

DGLGraph.push(u, message_func, reduce_func)

沿着指定的边类型从指定节点向其后继节点发送消息,并更新其节点特征。

DGLGraph.update_all(message_func, reduce_func)

沿着指定类型的所有边发送消息,并更新相应目标类型的所有节点。

DGLGraph.multi_update_all(etype_dict, ...[, ...])

沿着所有边发送消息,先按类型聚合,然后跨不同类型聚合,最后更新所有节点的特征。

DGLGraph.prop_nodes(nodes_generator, ...[, ...])

通过依次在节点上触发 pull(),使用图遍历传播消息。

DGLGraph.prop_edges(edges_generator, ...[, ...])

通过依次在边上触发 send_and_recv(),使用图遍历传播消息。

DGLGraph.filter_nodes(predicate[, nodes, ntype])

返回给定节点类型中满足给定谓词的节点的 ID。

DGLGraph.filter_edges(predicate[, edges, etype])

返回给定边类型中满足给定谓词的边的 ID。

查询和操作批处理信息

用于获取/设置批处理信息的方法,前提是当前图是由 dgl.batch() 生成的批处理图。它们也广泛用于 批处理和读出操作 中。

DGLGraph.batch_size

返回批处理图中的图数量。

DGLGraph.batch_num_nodes([ntype])

返回批处理中具有指定节点类型的每个图的节点数量。

DGLGraph.batch_num_edges([etype])

返回批处理中具有指定边类型的每个图的边数量。

DGLGraph.set_batch_num_nodes(val)

手动设置批处理中具有指定节点类型的每个图的节点数量。

DGLGraph.set_batch_num_edges(val)

手动设置批处理中具有指定边类型的每个图的边数量。

修改拓扑

就地修改图结构的方法。

DGLGraph.add_nodes(num[, data, ntype])

添加相同节点类型的新节点

DGLGraph.add_edges(u, v[, data, etype])

为指定的边类型添加多个新边

DGLGraph.remove_nodes(nids[, ntype, store_ids])

移除指定节点类型的多个节点

DGLGraph.remove_edges(eids[, etype, store_ids])

移除指定边类型的多个边

设备控制

获取或更改图所在设备的方法。

DGLGraph.to(device, **kwargs)

将节点数据、边数据和图结构移动到目标设备 (CPU/GPU)。

DGLGraph.device

获取图的设备。

DGLGraph.cpu()

返回此图在 CPU 上的新副本。

DGLGraph.pin_memory_()

将图结构和节点/边数据锁定到页面锁定内存,以便 GPU 进行零拷贝访问。

DGLGraph.unpin_memory_()

从页面锁定内存中解锁图结构和节点/边数据。

DGLGraph.is_pinned()

检查图结构是否已锁定到页面锁定内存。

杂项

其他实用方法。

DGLGraph.local_scope()

进入图的局部作用域上下文。