首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图形从Networkx转换为Dgl错误时

将图形从Networkx转换为Dgl错误时
EN

Stack Overflow用户
提问于 2022-03-16 13:31:37
回答 1查看 614关注 0票数 0

当我想将我的networkx图转换成dgl库时,我会得到以下错误

代码语言:javascript
复制
KeyError                                  Traceback (most recent call last)

<ipython-input-140-ee8cede61bf4> in <module>()
---> 12 dgl.from_networkx(DiGraphNN, node_attrs=['name'], edge_attrs=['weight'])

/usr/local/lib/python3.7/dist-packages/dgl/convert.py in from_networkx(nx_graph, node_attrs, edge_attrs, edge_id_attr_name, idtype, device)
   1277         for nid in range(g.number_of_nodes()):
   1278             for attr in node_attrs:
-> 1279                 attr_dict[attr].append(nx_graph.nodes[nid][attr])
   1280         for attr in node_attrs:
   1281             g.ndata[attr] = F.copy_to(_batcher(attr_dict[attr]), g.device)

KeyError: 'name' 

‘'name’表示这里的节点功能,我的数据结构如下所示

代码语言:javascript
复制
[(-1, {'name': 11}), (20940, {'name': 11}), (-2, {'name': 11}), (-3, {'name': 11}), (-6, {'name': 11}), (-10, {'name': 11}), (-11, {'name': 11}), (-12, {'name': 11}), (-14, {'name': 11})]

我不明白为什么它不能访问图形的名字特性。

代码语言:javascript
复制
from networkx.classes import digraph
import dgl
from dgl.data import DGLDataset

# dG = dgl.DGLGraph()
dgl.from_networkx(DiGraphNN, node_attrs=['name'], edge_attrs=['weight'])

你有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-17 10:27:45

我在不同的两天里尝试了不同的东西。我不能直接解决这个函数,但我有解决办法,我怀疑为什么它不能工作。

造成这个问题的原因是:

  1. 如果某些节点没有此功能
  2. 也许边有不同的节点,这些节点不会出现在节点列表中,所以它会自动添加,这是我的怀疑,目前我对Dgl还不太了解。

我是怎么修正这个的:

代码语言:javascript
复制
dG = dgl.from_networkx(DiGraphNN)
dG.ndata['name'] = torch.randn(6, 3)
dG.edata['weight'] = torch.randn(5, 4)

所以我在DGL中创建了没有功能的图形,并在添加了功能之后创建了它。这只是一个例子,您必须在节点或边缘的长度中添加功能。

文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71497972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档