Pytorch Geometric 稀疏邻接矩阵转化为边索引张量。

5

我的数据对象有data.adj_t参数,给出了稀疏邻接矩阵。我如何从中获取大小为[2,num_edges]edge_index张量?


你找到答案了吗? - Helen Grey
2个回答

1
如您所见,在docs中:

Since this feature is still experimental, some operations, e.g., graph pooling methods, may still require you to input the edge_index format. You can convert adj_t back to (edge_index, edge_attr) via:

row, col, edge_attr = adj_t.t().coo()
edge_index = torch.stack([row, col], dim=0)

0
你可以使用 torch_geometric.utils.convert.from_scipy_sparse_matrix
>>> from torch_geometric.utils.convert import from_scipy_sparse_matrix
>>> edge_index = torch.tensor([
...    [0, 1, 1, 2, 2, 3],
...    [1, 0, 2, 1, 3, 2],
>>> ])
>>> adj = to_scipy_sparse_matrix(edge_index)
>>> # `edge_index` and `edge_weight` are both returned
>>> from_scipy_sparse_matrix(adj)
(tensor([[0, 1, 1, 2, 2, 3],
        [1, 0, 2, 1, 3, 2]]),
tensor([1., 1., 1., 1., 1., 1.]))

这个怎么回答呢?我不明白 :C OP正在询问如何从一个尚未存在的邻接矩阵中获取edge_index。这难道不是在做完全相反的事情吗? - Phoenix
1
第二行输入中构建的edge_index是一个示例,用于验证最终结果。from_scipy_sparse_matrix的输出是一个元组,其中的第一个元素是对OP的答案。 - ndrwnaguib
1
明白了,谢谢! - Phoenix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接