转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~
目录
函数作用:
从数据路径加载分区数据。
g, nodes_feats, efeats, gpb, graph_name, node_type, etype = dgl.distributed.load_partition(part_config, rank)
入参参数:
返回参数:
DGLGraph格式的子图,这个没啥好说的,非常常用。
包含训练集、验证集、测试集的mask,以及特征和标签。
当然,也可以自己往里面添加特征,比如:
nodes_feats['part_id'] = g.ndata.get['part_id']
nodes_feats['inner_node'] = g.ndata['inner_node'].bool()
如果没有边特征,就是空的
这个就很重要了。它维护着当前分区的信息,可以定位节点和边所需的所有信息,包括:
实际的信息更多。需要注意的是:因为节点/边已被重新标记,因此同一分区中的ID位于连续的ID范围内。
我们会经常用到它,比如根据分区ID获取节点ID范围等等,比如:
node_ids = gpb.partid2nids(i)
图的名称,是在dgl.distributed.partition_graph时候给的。
节点类型是用于处理异构图heterogeneous graphs的概念。异构图是指包含不同类型节点和边的图。每种类型的节点和边可能具有不同的属性和特征。
与节点类型一样的含义。
包含了HALO节点。数组大小是当前子图的节点数,其中的值代表节点所对应的全局分区ID。
包含了HALO节点。数组大小是当前子图的节点数,其中的0或1代表该节点是当前分区的节点还是HALO节点。可以使用torch.nonzero(g.ndata['inner_node'])来获取值为1所对应的索引。
根据分区ID获取该分区内所有的全局节点ID范围。
dgl.NID
是一个保留的键,用于标识节点的全局ID。
用于存储节点的原始 ID,因为在图进行分区时候会进行重新映射节点 ID。原始 ID可以用来追溯节点在原始图中的位置。注意,这个属性需要在dgl.distributed.partition_graph时候指定return_mapping=True才能生成。
orig_id
):这是节点在原始图中的 ID,未经过分区或重新映射。这些 ID 保持了节点在原始图中的位置。dgl.NID
):在分区或其他处理过程中,节点 ID 可能会被重新映射以优化分区内的访问和计算效率。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。