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.]))
Другие вопросы по тегам