Tensor的属性。
每一个tensor都有以下三个属性:
稀疏的张量:torch.sparse_coo_tensor, coo类型表示非零元素的坐标形式。
稀疏张量指矩阵中的大多数元素的值都为0,由于其中非常多的元素都是0,使用常规方法进行存储非常的浪费空间,所以采用另外的方法存储稀疏张量。
tensorflow采用indices+values矩阵来描述和定义稀疏矩阵。 indices是一个张量,张量中的最内层的向量表示了稠密矩阵中非零元素的位置。 values是一个一维向量,是有稠密矩阵中非零元素的数值组成的序列。

稀疏的好处: 1. 简化模型:多0<->数据/参数稀疏,可简化; 2. 对数据进行稀疏化表示可减小在内存中的开销。
import torch
dev = torch.device("cpu")
a = torch.tensor([2, 2],
dtype=torch.int32,
device=dev)
print(a)
print("-----------------")
dev = torch.device("cuda")
a = torch.tensor([2, 2],
dtype=torch.float32,
device=dev)
print(a)
print("-----------------")
i = torch.tensor([[0, 1, 2], [0, 1, 2]])
v = torch.tensor([1, 2, 3])
#将稀疏张量转换为稠密张量
a = torch.sparse_coo_tensor(i, v, (4, 4),
dtype=torch.float32,
device=dev).to_dense()
print(a)
运行结果:
tensor([2, 2], dtype=torch.int32)
-----------------
tensor([2., 2.], device='cuda:0')
-----------------
tensor([[1., 0., 0., 0.],
[0., 2., 0., 0.],
[0., 0., 3., 0.],
[0., 0., 0., 0.]], device='cuda:0')