dgl.DGLGraph

class dgl.DGLGraph[source]

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

有几种方法可以创建DGLGraph:

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

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

  • 要从其他数据源创建图形,请使用dgl.*创建操作。参见 Graph Create Ops

阅读用户指南章节 第一章:图 以深入了解其使用方法。

查询元图结构

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

DGLGraph.ntypes

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

DGLGraph.etypes

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

DGLGraph.srctypes

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

DGLGraph.dsttypes

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

DGLGraph.canonical_etypes

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

DGLGraph.metagraph()

返回异构图(heterograph)的元图(metagraph)。

DGLGraph.to_canonical_etype(etype)

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

查询图结构

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

DGLGraph.num_nodes([ntype])

返回图中节点的数量。

DGLGraph.number_of_nodes([ntype])

Alias of num_nodes()

DGLGraph.num_edges([etype])

返回图中的边数。

DGLGraph.number_of_edges([etype])

Alias of num_edges()

DGLGraph.num_src_nodes([ntype])

返回图中源节点的数量。

DGLGraph.number_of_src_nodes([ntype])

Alias of num_src_nodes()

DGLGraph.num_dst_nodes([ntype])

返回图中目标节点的数量。

DGLGraph.number_of_dst_nodes([ntype])

Alias of 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, ...])

Alias of dgl.node_subgraph().

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

Alias of dgl.edge_subgraph().

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

Alias of dgl.node_type_subgraph().

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

Alias of dgl.edge_type_subgraph().

DGLGraph.__getitem__(key)

返回此图的关系切片。

DGLGraph.line_graph([回溯, 共享])

Alias of dgl.line_graph().

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

Alias of dgl.reverse().

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

Alias of dgl.add_self_loop().

DGLGraph.remove_self_loop([etype])

Alias of dgl.remove_self_loop().

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

Alias of dgl.to_simple().

DGLGraph.to_cugraph()

Convert a DGL graph to a cugraph.Graph and return.

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

Alias of dgl.reorder_graph().

邻接矩阵和关联矩阵

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

DGLGraph.adj([etype, eweight_name])

获取图的邻接矩阵。

DGLGraph.adjacency_matrix([etype])

Alias of 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)

将ndata、edata和图结构移动到目标设备(cpu/gpu)。

DGLGraph.device

获取图形的设备。

DGLGraph.cpu()

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

DGLGraph.pin_memory_()

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

DGLGraph.unpin_memory_()

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

DGLGraph.is_pinned()

检查图形结构是否固定在页面锁定内存中。

杂项

其他实用方法。

DGLGraph.local_scope()

为图表输入一个本地范围上下文。