1. 程式人生 > 程式設計 >pytorch常見的Tensor型別詳解

pytorch常見的Tensor型別詳解

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.cudatensor.cpu的方法實現。

如:

#設定預設tensor,注意引數是字串
torch.set_default_tensor_type('torch.IntTensor')
 
a=torch.Tensor(2,3)
print(a)  #a現在是IntTensor

以上這篇pytorch常見的Tensor型別詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。