torch.spmm矩阵乘法

本文介绍了PyTorch几何库(PyG)中的sparseTensor的创建和使用,强调了其在图神经网络(GNN)中的重要性。通过示例展示了如何利用sparseTensor创建稀疏矩阵,并通过torch.spmm进行矩阵乘法操作。同时,指出Torch.spmm仅支持特定类型的矩阵乘法,即sparse-dense,而不支持sparse-sparse或dense-sparse的乘法。
摘要由CSDN通过智能技术生成

GNN里面的PyG的sparseTensor 更强大:Pytorch-geomretic学习笔记 params_count,sparseTensor_LUQC638的博客-CSDN博客params_count(model),model是nn.Module类型的,计算参数的数量。SparseTensor:rom torch_sparse import SparseTensoradj = SparseTensor(row=edge_index[0], col=edge_index[1], value=..., sparse_sizes=(num_nodes, num_nodes))# value is optional and can bhttps://blog.csdn.net/weixin_61445075/article/details/124116495

Torch.spmm只支持 sparse 在前,dense 在后的矩阵乘法,两个sparse相乘或者dense在前的乘法不支持,当然两个dense矩阵相乘是支持的。

import torch

if __name__ == '__main__':
    indices = torch.tensor([[0,1],
                            [0,1]])
    values = torch.tensor([2,3])
    shape = torch.Size((2,2))
    
    s = torch.sparse.FloatTensor(indices,values,shape)
    print(s)
    d = torch.tensor([[1,2],
                      [3,4]])
    e = torch.tensor([[1, 2],
                      [3, 4]])
    # print(d)
    # 
    print(torch.spmm(s,d))

错误的情况会报错:

RuntimeError: sparse tensors do not have strides

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值