torch.sparse_coo_tensor — PyTorch 2.7 documentation (original) (raw)

torch.sparse_coo_tensor(indices, values, size=None, *, dtype=None, device=None, pin_memory=False, requires_grad=False, check_invariants=None, is_coalesced=None) → Tensor

Constructs a sparse tensor in COO(rdinate) format with specified values at the givenindices.

Note

This function returns an uncoalesced tensor when is_coalesced is unspecified or None.

Note

If the device argument is not specified the device of the givenvalues and indices tensor(s) must match. If, however, the argument is specified the input Tensors will be converted to the given device and in turn determine the device of the constructed sparse tensor.

Parameters

Keyword Arguments

Example:

i = torch.tensor([[0, 1, 1], ... [2, 0, 2]]) v = torch.tensor([3, 4, 5], dtype=torch.float32) torch.sparse_coo_tensor(i, v, [2, 4]) tensor(indices=tensor([[0, 1, 1], [2, 0, 2]]), values=tensor([3., 4., 5.]), size=(2, 4), nnz=3, layout=torch.sparse_coo)

torch.sparse_coo_tensor(i, v) # Shape inference tensor(indices=tensor([[0, 1, 1], [2, 0, 2]]), values=tensor([3., 4., 5.]), size=(2, 3), nnz=3, layout=torch.sparse_coo)

torch.sparse_coo_tensor(i, v, [2, 4], ... dtype=torch.float64, ... device=torch.device('cuda:0')) tensor(indices=tensor([[0, 1, 1], [2, 0, 2]]), values=tensor([3., 4., 5.]), device='cuda:0', size=(2, 4), nnz=3, dtype=torch.float64, layout=torch.sparse_coo)

Create an empty sparse tensor with the following invariants:

1. sparse_dim + dense_dim = len(SparseTensor.shape)

2. SparseTensor._indices().shape = (sparse_dim, nnz)

3. SparseTensor._values().shape = (nnz, SparseTensor.shape[sparse_dim:])

For instance, to create an empty sparse tensor with nnz = 0, dense_dim = 0 and

sparse_dim = 1 (hence indices is a 2D tensor of shape = (1, 0))

S = torch.sparse_coo_tensor(torch.empty([1, 0]), [], [1]) tensor(indices=tensor([], size=(1, 0)), values=tensor([], size=(0,)), size=(1,), nnz=0, layout=torch.sparse_coo)

and to create an empty sparse tensor with nnz = 0, dense_dim = 1 and

sparse_dim = 1

S = torch.sparse_coo_tensor(torch.empty([1, 0]), torch.empty([0, 2]), [1, 2]) tensor(indices=tensor([], size=(1, 0)), values=tensor([], size=(0, 2)), size=(1, 2), nnz=0, layout=torch.sparse_coo)