pytorch_geometric助手(持续更新ing)

edge_index转换成adj_t

1,单独将edge_index转换成adj_t: torch_sparse.SparseTensor

from torch_sparse import SparseTensor
edge_index = torch.tensor([[1,2,3,4], [0,0,0,0]])
adj_t = SparseTensor(row=edge_index[1], col=edge_index[0])
adj_t
>>> SparseTensor(row=tensor([0, 0, 0, 0]),
             col=tensor([1, 2, 3, 4]),
             size=(1, 5), nnz=4, density=80.00%)

SparseTensor默认会对row中的index排序

edge_index = torch.tensor([[0,0,0,0], [4,3,1,2]])
adj_t = SparseTensor(row=edge_index[1], col=edge_index[0])
adj_t
>>>SparseTensor(row=tensor([1, 2, 3, 4]),
             col=tensor([0, 0, 0, 0]),
             size=(5, 1), nnz=4, density=80.00%)
# row输入的[4,3,1,2]变成了[1, 2, 3, 4]

2,Data中的edge_index转换成adj_t:torch_geometric.transforms.ToSparseTensor

from torch_geometric.transforms import ToSparseTensor 
from torch_geometric.data.data import Data

transform = ToSparseTensor()
x = torch.randn(5,3)
data = Data(x=x, edge_index=edge_index)
data
>>> Data(edge_index=[2, 4], x=[5, 3])
data = transform(data)
data
>>> Data(adj_t=[5, 5, nnz=4], x=[5, 3])
data.adj_t
>>> SparseTensor(row=tensor([0, 0, 0, 0]),
             col=tensor([1, 2, 3, 4]),
             size=(5, 5), nnz=4, density=16.00%)

关于pytorch geometric中的稀疏邻接矩阵为何要存成转置的形式,可以参考我的另一篇博文。https://blog.csdn.net/weixin_39925939/article/details/121331550

adj_t转换成edge_index

row, col, _ = data.adj_t.t().coo()  #data is torch_geometric.data.data.Data
edge_index = torch.stack([row, col], axis=0)

慢慢补充

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值