edge_index = torch.tensor(list(G.edges)).t().contiguous()报错ValueError: too many dimensions 'str'
时间: 2024-02-17 15:04:34 浏览: 179
这个错误的原因是 list(G.edges) 返回的是字符串类型,而 torch.tensor() 函数只接受数字类型的输入。你需要将节点名称转换为数字,然后再传递给 torch.tensor() 函数。
你可以使用 PyTorch 中的 Dataset 和 DataLoader 类来处理这个问题。首先,创建一个字典,将每个节点名称映射到一个数字。然后,使用这个字典将图中的每个节点名称替换为数字,并将边列表转换为数字形式。最后,将转换后的边列表传递给 torch.tensor() 函数即可。
以下是一个示例代码:
```
from torch_geometric.datasets import Planetoid
from torch_geometric.data import DataLoader
import torch
# Load the Cora dataset
dataset = Planetoid(root='/tmp/Cora', name='Cora')
# Create a dictionary to map each node name to a number
node_to_index = {node: i for i, node in enumerate(dataset.data.x[:, 0])}
# Convert the edge list to a numerical format
edges = [(node_to_index[edge[0]], node_to_index[edge[1]]) for edge in dataset.data.edge_index.t().tolist()]
# Convert the edge list to a PyTorch tensor
edge_index = torch.tensor(edges).t().contiguous()
```
请注意,这只是一个示例代码,具体实现细节可能因数据集而异。
阅读全文