Pytorch Геометрическая разреженная матрица смежности с тензором индекса края
Мой объект данных имеет
data.adj_t
параметр, давая мне разреженную матрицу смежности. Как я могу получить
edge_index
тензор размера
[2, num_edges]
из этого?
2 ответа
Как вы можете видеть в документах:
Поскольку эта функция все еще является экспериментальной, для некоторых операций, например методов объединения графов, может потребоваться ввод
edge_index
формат. Вы можете конвертироватьadj_t
вернуться к(edge_index, edge_attr)
с помощью:row, col, edge_attr = adj_t.t().coo() edge_index = torch.stack([row, col], dim=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.]))