torch.sparse_bsr_tensor¶
- torch.sparse_bsr_tensor(crow_indices, col_indices, values, size=None, *, dtype=None, device=None, requires_grad=False, check_invariants=None) Tensor ¶
Constructs a sparse tensor in BSR (Block Compressed Sparse Row)) with specified 2-dimensional blocks at the given
crow_indices
andcol_indices
. Sparse matrix multiplication operations in BSR format are typically faster than that for sparse tensors in COO format. Make you have a look at the note on the data type of the indices.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
crow_indices (array_like) – (B+1)-dimensional array of size
(*batchsize, nrowblocks + 1)
. The last element of each batch is the number of non-zeros. This tensor encodes the block index in values and col_indices depending on where the given row block starts. Each successive number in the tensor subtracted by the number before it denotes the number of blocks in a given row.col_indices (array_like) – Column block co-ordinates of each block in values. (B+1)-dimensional tensor with the same length as values.
values (array_list) – Initial values for the tensor. Can be a list, tuple, NumPy
ndarray
, scalar, and other types that represents a (1 + 2 + K)-dimensional tensor whereK
is the number of dense dimensions.size (list, tuple,
torch.Size
, optional) – Size of the sparse tensor:(*batchsize, nrows * blocksize[0], ncols * blocksize[1], *densesize)
whereblocksize == values.shape[1:3]
. If not provided, the size will be inferred as the minimum size big enough to hold all non-zero blocks.
- Keyword Arguments
dtype (
torch.dtype
, optional) – the desired data type of returned tensor. Default: if None, infers data type fromvalues
.device (
torch.device
, optional) – the desired device of returned tensor. Default: if None, uses the current device for the default tensor type (seetorch.set_default_tensor_type()
).device
will be the CPU for CPU tensor types and the current CUDA device for CUDA tensor types.requires_grad (bool, optional) – If autograd should record operations on the returned tensor. Default:
False
.check_invariants (bool, optional) – If sparse tensor invariants are checked. Default: as returned by
torch.sparse.check_sparse_tensor_invariants.is_enabled()
, initially False.
- Example::
>>> crow_indices = [0, 1, 2] >>> col_indices = [0, 1] >>> values = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] >>> torch.sparse_bsr_tensor(torch.tensor(crow_indices, dtype=torch.int64), ... torch.tensor(col_indices, dtype=torch.int64), ... torch.tensor(values), dtype=torch.double) tensor(crow_indices=tensor([0, 1, 2]), col_indices=tensor([0, 1]), values=tensor([[[1., 2.], [3., 4.]], [[5., 6.], [7., 8.]]]), size=(2, 2), nnz=2, dtype=torch.float64, layout=torch.sparse_bsr)