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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐