pytorch的系数矩阵结构包括:
torch_sparse.tensor.SparseTensor: 该结构非pytorch官方给出的数据结构,在torch_geometric等包中使用。可以通过.to_torch_sparse_coo_tensor()转换为下面的COO tensor(coordinate)结构。torch.sparse包中存在的几种数据结构,详情见 https://pytorch.org/docs/stable/sparse.html 。包括torch.sparse_coo_tensor等。
torch.sparse中COO tensor相关运算:
- 提取indices、修改values:先进行
.coalesce(),再调用.indices()和.values(),获取结果后修改。将计算结果直接通过torch.sparse_coo_tensor(得到的.indices(), new_values)创建一个新的COO tensor。 - 加法:构造一个新的coo tensor,直接用+即可。
- 获取度数:用
torch.sparse.sum(你的sparse_tensor, dim=0).values() - 矩阵乘法:目前(2021.09.07)只能算稀疏矩阵和稠密矩阵的乘法,不能算稀疏矩阵之间的乘法!需要特别注意!调用的函数是
.matmul(稠密矩阵) - 计算对称形式拉普拉斯:
这篇博客介绍了PyTorch中稀疏矩阵的使用,特别是torch_sparse.tensor.SparseTensor和torch.sparse_coo_tensor。讨论了如何进行矩阵加法、提取度数以及稀疏矩阵与稠密矩阵的乘法。还展示了如何计算对称拉普拉斯矩阵,并给出了详细的步骤,包括度数的计算、逆平方根的处理以及最终的矩阵更新。
最低0.47元/天 解锁文章
2145

被折叠的 条评论
为什么被折叠?



