一切过往,皆为序章,一切未知,皆为终章。

Tensor类型

Tensor类型

1.Tensor有不同的数据类型,每种类型又有CPU和GPU两种版本;
2.默认的tensor类型是FloatTensor,t.set_default_tensor_type可以修改默认的tensor类型;
3.特别的HalfTensor是专门为GPU显存不足设计的,同样的元素个数,显存只占用FloatTensor的一半;
------------------------------------------------------------------------------------
数据类型               |   CPU tensor                |   GPU tensor
------------------------------------------------------------------------------------
32bit浮点              | torch.FloatTensor           | torch.cuda.FloatTensor
64bit浮点              | torch.DoubleTensor          |torch.cuda.DoubleTensor
16bit半精度浮点        | N/A                         | torch.cuda.HalfTensor   
8bit无符号整形         | torch.ByteTensor            | torch.cuda.ByteTensor
8bit有符号整形         | torch.CharTensor            | torch.cuda.CharTensor
16bit有符号整形        | torch.ShortTensor           | torch.cuda.ShortTensor  
32bit有符号整形        | torch.IntTensor             | torch.cuda.IntTensor  
64bit有符号整形        | torch.LongTensor            | torch.cuda.LongTensor   
------------------------------------------------------------------------------------
4.各个数据类型之间可以相互转化,type(new_type)是通用的方法,也有float、long、half等快捷方法,CPU tensor与GPU tensor之间的相互转化通过tensor.cuda和tensor.cpu的方法实现;

实例操作

#设置默认tensor格式,正常默认是FloatTensor,修改为IntTensor
t.set_default_tensor_type(t.DoubleTensor)
a = t.Tensor(2,3)
print(a.dtype)      #torch.float64

b = a.float()       #等价于b = a.type(t.FloatTensor)
print(b.dtype)      #torch.float32

self = t.Tensor(3, 5)
print('self',self.dtype)
tesnor = t.IntTensor(2,3)
print('tensor',tesnor.dtype)

print( self.type_as(tesnor).dtype)      #通过typt_as转化类型
'''
self torch.float64
tensor torch.int32
torch.int32
'''

d = a.new(2,3)      # 等价于torch.DoubleTensor(2,3)
print('d',d)

posted @ 2018-11-21 13:17  爱吃帮帮糖  阅读(4001)  评论(0编辑  收藏  举报