← 返回首页
Tensor的属性
发表时间:2024-01-22 06:43:40
Tensor的属性

Tensor的属性。

1.tensor的属性

每一个tensor都有以下三个属性:

稀疏的张量:torch.sparse_coo_tensor, coo类型表示非零元素的坐标形式。

2.稀疏张量

稀疏张量指矩阵中的大多数元素的值都为0,由于其中非常多的元素都是0,使用常规方法进行存储非常的浪费空间,所以采用另外的方法存储稀疏张量。

tensorflow采用indices+values矩阵来描述和定义稀疏矩阵。 indices是一个张量,张量中的最内层的向量表示了稠密矩阵中非零元素的位置。 values是一个一维向量,是有稠密矩阵中非零元素的数值组成的序列。

稀疏的好处: 1. 简化模型:多0<->数据/参数稀疏,可简化; 2. 对数据进行稀疏化表示可减小在内存中的开销。

3.Tensor属性编程

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')