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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM