澄清对节点和边索引的理解



通过访问data对象的属性,我如何知道哪个节点特性属于哪个节点?如果我理解正确的话,data.x包含节点特征。通过运行下面的循环,我可以访问这些功能但是,例如,如果它属于节点0或节点9,我怎么知道呢?​

from torch_geometric.data import Data
edge_index = torch.tensor([[0, 1, 1, 2, 1, 9],
[1, 0, 2, 1, 8, 1]
], dtype=torch.long)
x = torch.tensor([[-5,7], [0,5], [0,9], [10,9]], dtype=torch.float)
​
data = Data(x=x, edge_index=edge_index)
​
for item in range(0, data.x.shape[0]):
print(item, data.x[item], data.edge_index.t()[item])

在代码中,通过定义现有的x,Pytorch Geometric(根据x的形状(推断出存在四个节点。这在文件中有规定:

如果存在节点级属性(例如data.x(,则会自动推断数据对象中的节点数。

您还为节点9之前的节点指定了边。如果您尝试在该代码上运行任何模型,我怀疑它会产生错误,因为预计只存在四个节点。这是因为它将尝试访问x的第9个元素,这将返回索引错误。

最佳做法是定义存在的节点数。如文件所述:

我们建议通过`data.num_nodes=…显式设置数据对象中的节点数。。。

相关内容

  • 没有找到相关文章

最新更新