如何将稀疏矩阵转换为密集邻接矩阵?

乔尼

我正在尝试将仅包含非零元素([[行],[列]])的索引的稀疏邻接矩阵/列表转换为在索引处包含1的密集矩阵,否则将包含0。从Pytorch geometric(文档)中找到了使用to_dense_adj的解决方案但是,这并不是我想要的,因为密集矩阵的形状不符合预期。这是一个例子:

sparse_adj = torch.tensor([[0, 1, 2, 1, 0], [0, 1, 2, 3, 4]])

因此,密集矩阵的大小应为5x3(第二个数组“存储”列;在(0,0),(1,1),(2,2),(1,3)和( 0,4)),因为第一个数组中的元素小于或等于2。

然而,

dense_adj = to_dense(sparse_adj)[0]

输出一个密集矩阵,但形状为(5,5)。是否可以定义输出形状或是否有其他解决方案来获得我想要的?

编辑:我有一个解决方案,现在可以将其转换回稀疏表示形式

dense_adj = torch.sparse.FloatTensor(sparse_adj, torch.ones(5), torch.Size([3,5])).to_dense()
ind = dense_adj.nonzero(as_tuple=False).t().contiguous()
sparse_adj = torch.stack((ind[1], ind[0]), dim=0)

还是有其他更好的选择?

伊万

您可以先构造一个稀疏矩阵,torch.sparse然后将其转换为密集矩阵,以实现此目的。为此,您将需要提供torch.sparse.FloatTensor索引的二维张量,值的张量以及输出大小:

sparse_adj = torch.tensor([[0, 1, 2, 1, 0], [0, 1, 2, 3, 4]])
torch.sparse.FloatTensor(sparse_adj, torch.ones(5), torch.Size([3,5])).to_dense()

您可以使用以下方法动态获取输出矩阵的大小

sparse_adj.max(axis=1).values + 1

这样就变成了:

torch.sparse.FloatTensor(
    sparse_adj, 
    torch.ones(sparse_adj.shape[1]), 
    (sparse_adj.max(axis=1).values + 1).tolist())

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将邻接矩阵转换为发病率矩阵,反之亦然?

来自分类Dev

如何将该邻接矩阵转换为图形对象?

来自分类Dev

如何将该邻接矩阵转换为图形对象?

来自分类Dev

如何将该邻接矩阵转换为图形对象?

来自分类Dev

如何将加权边列表转换为 R 中的邻接矩阵

来自分类Dev

如何将.txt的稀疏表示形式转换为scipy中的密集矩阵?

来自分类Dev

如何将“ SciPy稀疏矩阵”转换为“ NumPy矩阵”?

来自分类Dev

如何使用python将邻接矩阵转换为邻接列表?

来自分类Dev

R:如果值满足特定条件,如何将数据帧转换为邻接矩阵?

来自分类Dev

Python-将边缘列表转换为邻接矩阵

来自分类Dev

将igraph邻接矩阵转换为numpy数组

来自分类Dev

将邻接矩阵转换为Cytoscape的Edgelist(csv文件)

来自分类Dev

R:将表转换为邻接矩阵或边列表

来自分类Dev

将txt文件转换为邻接矩阵

来自分类Dev

将邻接矩阵转换为CSV文件

来自分类Dev

将邻接矩阵转换为 R 中的两列表

来自分类Dev

从最近邻居搜索创建邻接矩阵。(将邻接列表转换为邻接矩阵)-Matlab

来自分类Dev

使用cuSPARSE将密集矩阵转换为稀疏CSR格式

来自分类Dev

将稀疏矩阵行转换为密集泄漏存储

来自分类Dev

如何将 Pandas Dataframe 转换为稀疏矩阵?

来自分类Dev

将稀疏矩阵转换为密集矩阵时出现MemoryError错误?(numpy,scikit)

来自分类Dev

如何将稀疏数据的PythonRDD转换为密集的PythonRDD

来自分类Dev

如何将多个稀疏矩阵和密集矩阵组合在一起

来自分类Dev

R igraph-将加权邻接矩阵转换为加权边列表

来自分类Dev

将横截面数据转换为R中的邻接矩阵

来自分类Dev

将二部图转换为邻接矩阵python

来自分类Dev

将二部图转换为邻接矩阵Spark Scala

来自分类Dev

将循环锦标赛的名义结果转换为邻接矩阵列表

来自分类Dev

将data.frame转换为邻接矩阵以进行网络分析(R)

Related 相关文章

  1. 1

    如何将邻接矩阵转换为发病率矩阵,反之亦然?

  2. 2

    如何将该邻接矩阵转换为图形对象?

  3. 3

    如何将该邻接矩阵转换为图形对象?

  4. 4

    如何将该邻接矩阵转换为图形对象?

  5. 5

    如何将加权边列表转换为 R 中的邻接矩阵

  6. 6

    如何将.txt的稀疏表示形式转换为scipy中的密集矩阵?

  7. 7

    如何将“ SciPy稀疏矩阵”转换为“ NumPy矩阵”?

  8. 8

    如何使用python将邻接矩阵转换为邻接列表?

  9. 9

    R:如果值满足特定条件,如何将数据帧转换为邻接矩阵?

  10. 10

    Python-将边缘列表转换为邻接矩阵

  11. 11

    将igraph邻接矩阵转换为numpy数组

  12. 12

    将邻接矩阵转换为Cytoscape的Edgelist(csv文件)

  13. 13

    R:将表转换为邻接矩阵或边列表

  14. 14

    将txt文件转换为邻接矩阵

  15. 15

    将邻接矩阵转换为CSV文件

  16. 16

    将邻接矩阵转换为 R 中的两列表

  17. 17

    从最近邻居搜索创建邻接矩阵。(将邻接列表转换为邻接矩阵)-Matlab

  18. 18

    使用cuSPARSE将密集矩阵转换为稀疏CSR格式

  19. 19

    将稀疏矩阵行转换为密集泄漏存储

  20. 20

    如何将 Pandas Dataframe 转换为稀疏矩阵?

  21. 21

    将稀疏矩阵转换为密集矩阵时出现MemoryError错误?(numpy,scikit)

  22. 22

    如何将稀疏数据的PythonRDD转换为密集的PythonRDD

  23. 23

    如何将多个稀疏矩阵和密集矩阵组合在一起

  24. 24

    R igraph-将加权邻接矩阵转换为加权边列表

  25. 25

    将横截面数据转换为R中的邻接矩阵

  26. 26

    将二部图转换为邻接矩阵python

  27. 27

    将二部图转换为邻接矩阵Spark Scala

  28. 28

    将循环锦标赛的名义结果转换为邻接矩阵列表

  29. 29

    将data.frame转换为邻接矩阵以进行网络分析(R)

热门标签

归档