pytorch常見的Tensor型別詳解
阿新 • • 發佈:2020-01-16
Tensor有不同的資料型別,每種型別分別有對應CPU和GPU版本(HalfTensor除外)。預設的Tensor是FloatTensor,可通過torch.set_default_tensor_type修改預設tensor型別(如果預設型別為GPU tensor,則所有操作都將在GPU上進行)。
Tensor的型別對分析記憶體佔用很有幫助,例如,一個size為(1000,1000,1000)的FloatTensor,它有1000*1000*1000=10^9個元素,每一個元素佔用32bit/8=4Byte記憶體,所以共佔用大約4GB記憶體/視訊記憶體。HalfTensor是專為GPU版本設計的,同樣的元素個數,視訊記憶體佔用只有HalfTensor的一半,所以可以極大緩解GPU視訊記憶體不足的問題,但是由於HalfTensor所能表示的數值大小和精度有限,所以可能出現溢位等問題。
資料型別 | CPU Tensor | GPU Tensor |
32 bit 浮點 | torch.FloatTensor | torch.cuda.FloatTensor |
64 bit 浮點 | torch.DoubleTensor | torch.cuda.DoubleTensor |
16 bit 半精度浮點 | N/A | torch.cuda.HalfTensor |
8 bit 無符號整形(0~255) | torch.ByteTensor | torch.cuda.ByteTensor |
8 bit 有符號整形(-128~127) | torch.CharTensor | torch.cuda.CharTensor |
16 bit 有符號整形 | torch.ShortTensor | torch.cuda.ShortTensor |
32 bit 有符號整形 | torch.IntTensor | torch.cuda.IntTensor |
64 bit 有符號整形 | torch.LongTensor | torch.cuda LongTensor |
各資料型別之間可以互相轉換,type(new_type)是通用的做法,同時還有float、long、half等快捷方法。CPU tensor和GPU tensor之間的互換是通過tensor.cuda和tensor.cpu的方法實現。
如:
#設定預設tensor,注意引數是字串 torch.set_default_tensor_type('torch.IntTensor') a=torch.Tensor(2,3) print(a) #a現在是IntTensor
以上這篇pytorch常見的Tensor型別詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。