# shape: torch.Size([]) # nnz: 2 # sparse_dim: 0 # indices shape: torch.Size([0, 2]) # values shape: torch.Size([2]) ########## torch.int32 ########## # sparse tensor tensor(indices=tensor([], size=(0, 2)), values=tensor([0, 1]), size=(), nnz=2, dtype=torch.int32, layout=torch.sparse_coo) # _indices tensor([], size=(0, 2), dtype=torch.int64) # _values tensor([0, 1], dtype=torch.int32) ########## torch.float32 ########## # sparse tensor tensor(indices=tensor([], size=(0, 2)), values=tensor([0., 1.]), size=(), nnz=2, layout=torch.sparse_coo) # after requires_grad_ tensor(indices=tensor([], size=(0, 2)), values=tensor([0., 1.]), size=(), nnz=2, layout=torch.sparse_coo, requires_grad=True) # after addition tensor(indices=tensor([], size=(0, 2)), values=tensor([0., 2.]), size=(), nnz=2, layout=torch.sparse_coo, grad_fn=) # _indices tensor([], size=(0, 2), dtype=torch.int64) # _values tensor([0., 1.]) # shape: torch.Size([0]) # nnz: 10 # sparse_dim: 0 # indices shape: torch.Size([0, 10]) # values shape: torch.Size([10, 0]) ########## torch.int32 ########## # sparse tensor tensor(indices=tensor([], size=(0, 10)), values=tensor([], size=(10, 0)), size=(0,), nnz=10, dtype=torch.int32, layout=torch.sparse_coo) # _indices tensor([], size=(0, 10), dtype=torch.int64) # _values tensor([], size=(10, 0), dtype=torch.int32) ########## torch.float64 ########## # sparse tensor tensor(indices=tensor([], size=(0, 10)), values=tensor([], size=(10, 0)), size=(0,), nnz=10, dtype=torch.float64, layout=torch.sparse_coo) # after requires_grad_ tensor(indices=tensor([], size=(0, 10)), values=tensor([], size=(10, 0)), size=(0,), nnz=10, dtype=torch.float64, layout=torch.sparse_coo, requires_grad=True) # after addition tensor(indices=tensor([], size=(0, 10)), values=tensor([], size=(10, 0)), size=(0,), nnz=10, dtype=torch.float64, layout=torch.sparse_coo, grad_fn=) # _indices tensor([], size=(0, 10), dtype=torch.int64) # _values tensor([], size=(10, 0), dtype=torch.float64) # shape: torch.Size([2]) # nnz: 3 # sparse_dim: 0 # indices shape: torch.Size([0, 3]) # values shape: torch.Size([3, 2]) ########## torch.int32 ########## # sparse tensor tensor(indices=tensor([], size=(0, 3)), values=tensor([[0, 0], [0, 1], [1, 1]]), size=(2,), nnz=3, dtype=torch.int32, layout=torch.sparse_coo) # _indices tensor([], size=(0, 3), dtype=torch.int64) # _values tensor([[0, 0], [0, 1], [1, 1]], dtype=torch.int32) ########## torch.float32 ########## # sparse tensor tensor(indices=tensor([], size=(0, 3)), values=tensor([[0.0000, 0.3333], [0.6667, 1.0000], [1.3333, 1.6667]]), size=(2,), nnz=3, layout=torch.sparse_coo) # after requires_grad_ tensor(indices=tensor([], size=(0, 3)), values=tensor([[0.0000, 0.3333], [0.6667, 1.0000], [1.3333, 1.6667]]), size=(2,), nnz=3, layout=torch.sparse_coo, requires_grad=True) # after addition tensor(indices=tensor([], size=(0, 3)), values=tensor([[0.0000, 0.6667], [1.3333, 2.0000], [2.6667, 3.3333]]), size=(2,), nnz=3, layout=torch.sparse_coo, grad_fn=) # _indices tensor([], size=(0, 3), dtype=torch.int64) # _values tensor([[0.0000, 0.3333], [0.6667, 1.0000], [1.3333, 1.6667]]) # shape: torch.Size([100, 3]) # nnz: 3 # sparse_dim: 1 # indices shape: torch.Size([1, 3]) # values shape: torch.Size([3, 3]) ########## torch.int32 ########## # sparse tensor tensor(indices=tensor([[0, 1, 2]]), values=tensor([[0, 0, 0], [0, 0, 1], [1, 1, 1]]), size=(100, 3), nnz=3, dtype=torch.int32, layout=torch.sparse_coo) # _indices tensor([[0, 1, 2]]) # _values tensor([[0, 0, 0], [0, 0, 1], [1, 1, 1]], dtype=torch.int32) ########## torch.float64 ########## # sparse tensor tensor(indices=tensor([[0, 1, 2]]), values=tensor([[0.0000, 0.2222, 0.4444], [0.6667, 0.8889, 1.1111], [1.3333, 1.5556, 1.7778]]), size=(100, 3), nnz=3, dtype=torch.float64, layout=torch.sparse_coo) # after requires_grad_ tensor(indices=tensor([[0, 1, 2]]), values=tensor([[0.0000, 0.2222, 0.4444], [0.6667, 0.8889, 1.1111], [1.3333, 1.5556, 1.7778]]), size=(100, 3), nnz=3, dtype=torch.float64, layout=torch.sparse_coo, requires_grad=True) # after addition tensor(indices=tensor([[0, 1, 2]]), values=tensor([[0.0000, 0.4444, 0.8889], [1.3333, 1.7778, 2.2222], [2.6667, 3.1111, 3.5556]]), size=(100, 3), nnz=3, dtype=torch.float64, layout=torch.sparse_coo, grad_fn=) # _indices tensor([[0, 1, 2]]) # _values tensor([[0.0000, 0.2222, 0.4444], [0.6667, 0.8889, 1.1111], [1.3333, 1.5556, 1.7778]], dtype=torch.float64) # shape: torch.Size([100, 20, 3]) # nnz: 0 # sparse_dim: 2 # indices shape: torch.Size([2, 0]) # values shape: torch.Size([0, 3]) ########## torch.int32 ########## # sparse tensor tensor(indices=tensor([], size=(2, 0)), values=tensor([], size=(0, 3)), size=(100, 20, 3), nnz=0, dtype=torch.int32, layout=torch.sparse_coo) # _indices tensor([], size=(2, 0), dtype=torch.int64) # _values tensor([], size=(0, 3), dtype=torch.int32) ########## torch.float32 ########## # sparse tensor tensor(indices=tensor([], size=(2, 0)), values=tensor([], size=(0, 3)), size=(100, 20, 3), nnz=0, layout=torch.sparse_coo) # after requires_grad_ tensor(indices=tensor([], size=(2, 0)), values=tensor([], size=(0, 3)), size=(100, 20, 3), nnz=0, layout=torch.sparse_coo, requires_grad=True) # after addition tensor(indices=tensor([], size=(2, 0)), values=tensor([], size=(0, 3)), size=(100, 20, 3), nnz=0, layout=torch.sparse_coo, grad_fn=) # _indices tensor([], size=(2, 0), dtype=torch.int64) # _values tensor([], size=(0, 3)) # shape: torch.Size([10, 0, 3]) # nnz: 3 # sparse_dim: 0 # indices shape: torch.Size([0, 3]) # values shape: torch.Size([3, 10, 0, 3]) ########## torch.int32 ########## # sparse tensor tensor(indices=tensor([], size=(0, 3)), values=tensor([], size=(3, 10, 0, 3)), size=(10, 0, 3), nnz=3, dtype=torch.int32, layout=torch.sparse_coo) # _indices tensor([], size=(0, 3), dtype=torch.int64) # _values tensor([], size=(3, 10, 0, 3), dtype=torch.int32) ########## torch.float64 ########## # sparse tensor tensor(indices=tensor([], size=(0, 3)), values=tensor([], size=(3, 10, 0, 3)), size=(10, 0, 3), nnz=3, dtype=torch.float64, layout=torch.sparse_coo) # after requires_grad_ tensor(indices=tensor([], size=(0, 3)), values=tensor([], size=(3, 10, 0, 3)), size=(10, 0, 3), nnz=3, dtype=torch.float64, layout=torch.sparse_coo, requires_grad=True) # after addition tensor(indices=tensor([], size=(0, 3)), values=tensor([], size=(3, 10, 0, 3)), size=(10, 0, 3), nnz=3, dtype=torch.float64, layout=torch.sparse_coo, grad_fn=) # _indices tensor([], size=(0, 3), dtype=torch.int64) # _values tensor([], size=(3, 10, 0, 3), dtype=torch.float64) # shape: torch.Size([10, 0, 3]) # nnz: 0 # sparse_dim: 0 # indices shape: torch.Size([0, 0]) # values shape: torch.Size([0, 10, 0, 3]) ########## torch.int32 ########## # sparse tensor tensor(indices=tensor([], size=(0, 0)), values=tensor([], size=(0, 10, 0, 3)), size=(10, 0, 3), nnz=0, dtype=torch.int32, layout=torch.sparse_coo) # _indices tensor([], size=(0, 0), dtype=torch.int64) # _values tensor([], size=(0, 10, 0, 3), dtype=torch.int32) ########## torch.float32 ########## # sparse tensor tensor(indices=tensor([], size=(0, 0)), values=tensor([], size=(0, 10, 0, 3)), size=(10, 0, 3), nnz=0, layout=torch.sparse_coo) # after requires_grad_ tensor(indices=tensor([], size=(0, 0)), values=tensor([], size=(0, 10, 0, 3)), size=(10, 0, 3), nnz=0, layout=torch.sparse_coo, requires_grad=True) # after addition tensor(indices=tensor([], size=(0, 0)), values=tensor([], size=(0, 10, 0, 3)), size=(10, 0, 3), nnz=0, layout=torch.sparse_coo, grad_fn=) # _indices tensor([], size=(0, 0), dtype=torch.int64) # _values tensor([], size=(0, 10, 0, 3))