这个错误是因为在GCNConv层中,图的节点索引超出了节点维度的大小。根据报错信息,节点维度为3,但节点索引为4,超出了边界。

可能的原因是数据集中的边缘索引是从1开始的,而在PyG中,节点索引应该从0开始。

要解决这个问题,可以在加载边缘数据时将节点索引减去1,以使其从0开始。修改MyDataset类的初始化方法中的以下行:

self.edges = torch.tensor(self.edges.values, dtype=torch.long).t().contiguous()

修改为:

self.edges = torch.tensor(self.edges.values, dtype=torch.long).t().contiguous() - 1

这样就可以将节点索引从1开始的边缘数据转换为从0开始的索引。

另外,还需要确保GCNConv层的输入维度与节点特征的维度匹配。根据报错信息,节点特征的维度为4,而GCNConv层的输入维度为3。需要确保这两个维度一致。可以在GCN模型的初始化方法中修改以下行:

self.conv1 = GCNConv(num_node_features, 8)

修改为:

self.conv1 = GCNConv(4, 8)

这样就可以将GCNConv层的输入维度与节点特征的维度匹配。

完成以上修改后,再次运行代码,应该就能够解决报错问题了。

PyG 图神经网络错误:节点索引超出范围的解决方案

原文地址: https://www.cveoy.top/t/topic/pe7F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录