Rate this Page

torch.sparse.sum#

torch.sparse.sum(input,dim=None,dtype=None)[source]#

Return the sum of each row of the given sparse tensor.

Returns the sum of each row of the sparse tensorinput in the givendimensionsdim. Ifdim is a list of dimensions,reduce over all of them. When sum over allsparse_dim, this methodreturns a dense tensor instead of a sparse tensor.

All summeddim are squeezed (seetorch.squeeze()), resulting an outputtensor havingdim fewer dimensions thaninput.

During backward, only gradients atnnz locations ofinputwill propagate back. Note that the gradients ofinput is coalesced.

Parameters
  • input (Tensor) – the input sparse tensor

  • dim (int ortuple ofints) – a dimension or a list of dimensions to reduce. Default: reduceover all dims.

  • dtype (torch.dtype, optional) – the desired data type of returned Tensor.Default: dtype ofinput.

Return type

Tensor

Example:

>>>nnz=3>>>dims=[5,5,2,3]>>>I=torch.cat([torch.randint(0,dims[0],size=(nnz,)),                   torch.randint(0, dims[1], size=(nnz,))], 0).reshape(2, nnz)>>>V=torch.randn(nnz,dims[2],dims[3])>>>size=torch.Size(dims)>>>S=torch.sparse_coo_tensor(I,V,size)>>>Stensor(indices=tensor([[2, 0, 3],                       [2, 4, 1]]),       values=tensor([[[-0.6438, -1.6467,  1.4004],                       [ 0.3411,  0.0918, -0.2312]],                      [[ 0.5348,  0.0634, -2.0494],                       [-0.7125, -1.0646,  2.1844]],                      [[ 0.1276,  0.1874, -0.6334],                       [-1.9682, -0.5340,  0.7483]]]),       size=(5, 5, 2, 3), nnz=3, layout=torch.sparse_coo)# when sum over only part of sparse_dims, return a sparse tensor>>>torch.sparse.sum(S,[1,3])tensor(indices=tensor([[0, 2, 3]]),       values=tensor([[-1.4512,  0.4073],                      [-0.8901,  0.2017],                      [-0.3183, -1.7539]]),       size=(5, 2), nnz=3, layout=torch.sparse_coo)# when sum over all sparse dim, return a dense tensor# with summed dims squeezed>>>torch.sparse.sum(S,[0,1,3])tensor([-2.6596, -1.1450])