pytorch dense to coo, edge_index to coo

pytorch 的dense matrix如何转成coo的sparse tensor?

给定边的下标,如何转成coo格式的稀疏矩阵?

稀疏矩阵如何转成dense的矩阵?

本文全部是pytorch的操作,如果想要numpy和pytorch结合的操作,请参考我另外一篇:

pytorch 邻接矩阵转稀疏矩阵 (dense matrix to coo matrix)

一. dense矩阵转coo稀疏矩阵

    def dense_to_coo(a:torch.Tensor):
        idx = torch.nonzero(a).T
        data = a[idx[0],idx[1]]
        coo = torch.sparse_coo_tensor(idx, data, a.shape)
        return coo

二. edge_index转coo稀疏矩阵

这里的edge index也就是边的下标,indices。

    def edge_index_to_coo(edge_index:torch.Tensor, N:int):
        v = torch.ones(edge_index.size(1))
        coo = torch.sparse_coo_tensor(edge_index, v, (N, N))
        return coo

三. coo转dense

dense = coo.to_dense()即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值