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)

05-08 08:16