当我想将我的networkx图转换成dgl库时,我会得到以下错误
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’表示这里的节点功能,我的数据结构如下所示
[(-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})]我不明白为什么它不能访问图形的名字特性。
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'])你有什么建议吗?
发布于 2022-03-17 10:27:45
我在不同的两天里尝试了不同的东西。我不能直接解决这个函数,但我有解决办法,我怀疑为什么它不能工作。
造成这个问题的原因是:
我是怎么修正这个的:
dG = dgl.from_networkx(DiGraphNN)
dG.ndata['name'] = torch.randn(6, 3)
dG.edata['weight'] = torch.randn(5, 4)所以我在DGL中创建了没有功能的图形,并在添加了功能之后创建了它。这只是一个例子,您必须在节点或边缘的长度中添加功能。
https://stackoverflow.com/questions/71497972
复制相似问题