我的数据对象有data.adj_t参数,它给出了稀疏邻接矩阵,我如何从这个矩阵中得到大小为[2, num_edges]的edge_indexTensor?
data.adj_t
[2, num_edges]
edge_index
wnvonmuf1#
如docs中所示:由于此功能仍处于试验阶段,因此某些操作(* 例如 * 图形池方法)可能仍需要您输入edge_index。您可以通过以下方式将adj_t转换回(edge_index, edge_attr):
adj_t
(edge_index, edge_attr)
row, col, edge_attr = adj_t.t().coo()edge_index = torch.stack([row, col], dim=0)
row, col, edge_attr = adj_t.t().coo()
edge_index = torch.stack([row, col], dim=0)
nzrxty8p2#
您可以使用torch_geometric.utils.convert.from_scipy_sparse_matrix。
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.]))
>>> 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.]))
2条答案
按热度按时间wnvonmuf1#
如docs中所示:
由于此功能仍处于试验阶段,因此某些操作(* 例如 * 图形池方法)可能仍需要您输入
edge_index
。您可以通过以下方式将adj_t
转换回(edge_index, edge_attr)
:nzrxty8p2#
您可以使用
torch_geometric.utils.convert.from_scipy_sparse_matrix
。