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)