从DGL图中,我想看到邻接矩阵
adjM = g.adjacency_matrix()
adjM我得到了以下内容,这很好:
tensor(indices=tensor([[0, 0, 0, 1],
[1, 2, 3, 3]]),
values=tensor([1., 1., 1., 1.]),
size=(4, 4), nnz=4, layout=torch.sparse_coo)现在,我希望有邻接矩阵和节点值各自独立。我想是这样的:
adjMatrix = adjM.indices # or
adjMatrix = adjM[0]
nodeValues = adjM.values # or
nodeValues = adjM[1]但这种形式不是由pyTorch/DGL估算的。我初学者的问题:
发布于 2022-10-18 09:05:16
点击这里!您将发现dgl.adj()的用法。正如文档所述,返回是一个邻接矩阵,返回类型是SparseTensor。
我注意到您发布的输出是一个SparseTensor。
您可以按以下方式进行尝试,然后就可以得到整个adj_matrix
我创建一个dgl图g,得到adj的邻接矩阵。
g = dgl.graph(([0, 1, 2], [1, 2, 3]))
adj = g.adj()
adj产出如下:
tensor(indices=tensor([[0, 1, 2],
[1, 2, 3]]),
values=tensor([1., 1., 1.]),
size=(4, 4), nnz=3, layout=torch.sparse_coo)我们可以发现adj是稀疏的,而稀疏类型是coo,我们可以使用下面的代码来验证adj是否是SparseTensor
adj.is_sparse产出:
True所以我们可以使用to_dense()得到原始的adj矩阵
adj.to_dense()结果是:
tensor([[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 0.]])当您对DGL有问题时,您可以查看Deep教程和文档。
https://stackoverflow.com/questions/73859439
复制相似问题