如何提取DGL生成的PyTorch稀疏COO张量的索引与值?求新手教程
提取DGL邻接矩阵的索引与值的方法及新手教程推荐
1. 正确的提取方法
你遇到的问题是因为PyTorch不同版本对稀疏张量属性的访问方式有区别,针对DGL返回的torch.sparse_coo张量,正确的提取方式分两种情况:
- PyTorch 1.10及以上版本:直接通过属性访问
# 提取邻接矩阵的索引(形状为(2, nnz),对应行、列索引) indices = adjM.indices # 提取邻接矩阵的非零值 values = adjM.values - PyTorch 1.9及更早版本:需要调用下划线开头的方法
indices = adjM._indices() values = adjM._values()
测试你的示例张量,执行后indices会得到tensor([[0, 0, 0, 1], [1, 2, 3, 3]]),values会得到tensor([1., 1., 1., 1.]),完全匹配你的需求。
2. 面向新手的相关教程
- DGL官方入门教程:从图的创建、基本属性查询到邻接矩阵操作都有分步讲解,能快速熟悉DGL的核心用法
- PyTorch官方稀疏张量指南:详细讲解COO等稀疏张量的结构、属性和常用操作,帮你理解稀疏张量的底层逻辑
- 国内深度学习社区的图文教程:很多平台有针对DGL新手的实战教程,用中文讲解图神经网络基础操作,更容易上手
内容的提问来源于stack exchange,提问作者pyano
相关产品推荐
相关产品推荐

