Pytorch的tensor數據類型

基本類型

torch.Tensor是一種包含單一數據類型元素的多維矩陣。測試

Torch定義了七種CPU tensor類型和八種GPU tensor類型:spa

Data tyoe CPU tensor GPU tensor
32-bit floating point torch.FloatTensor torch.cuda.FloatTensor
64-bit floating point torch.DoubleTensor torch.cuda.DoubleTensor
16-bit floating point N/A torch.cuda.HalfTensor
8-bit integer (unsigned) torch.ByteTensor torch.cuda.ByteTensor
8-bit integer (signed) torch.CharTensor torch.cuda.CharTensor
16-bit integer (signed) torch.ShortTensor torch.cuda.ShortTensor
32-bit integer (signed) torch.IntTensor torch.cuda.IntTensor
64-bit integer (signed) torch.LongTensor torch.cuda.LongTensor

torch.DoubleTensor(2, 2) 構建一個22 Double類型的張量 torch.ByteTensor(2, 2) 構建一個22 Byte類型的張量 torch.CharTensor(2, 2) 構建一個22 Char類型的張量 torch.ShortTensor(2, 2) 構建一個22 Short類型的張量 torch.IntTensor(2, 2) 構建一個22 Int類型的張量 torch.LongTensor(2, 2) 構建一個22 Long類型的張量code

類型轉換

2.1 CPU和GPU的Tensor之間轉換

從cpu –> gpu,使用data.cuda()便可。 若從gpu –> cpu,則使用data.cpu()。it

2.2 Tensor與Numpy Array之間的轉換

Tensor –> Numpy.ndarray 能夠使用 data.numpy(),其中data的類型爲torch.Tensor。 Numpy.ndarray –> Tensor 能夠使用torch.from_numpy(data),其中data的類型爲numpy.ndarray。table

2.3 Tensor的基本類型轉換(也就是float轉double,轉byte這種。)

爲了方便測試,咱們構建一個新的張量,你要轉變成不一樣的類型只須要根據本身的需求選擇便可class

  1. tensor = torch.Tensor(2, 5)model

  2. torch.long() 將tensor投射爲long類型 newtensor = tensor.long()數據類型

  3. torch.half()將tensor投射爲半精度浮點(16位浮點)類型 newtensor = tensor.half()float

  4. torch.int()將該tensor投射爲int類型 newtensor = tensor.int()numpy

  5. torch.double()將該tensor投射爲double類型 newtensor = tensor.double()

  6. torch.float()將該tensor投射爲float類型 newtensor = tensor.float()

  7. torch.char()將該tensor投射爲char類型 newtensor = tensor.char()

  8. torch.byte()將該tensor投射爲byte類型 newtensor = tensor.byte()

  9. torch.short()將該tensor投射爲short類型 newtensor = tensor.short()

若是當你須要提升精度,好比說想把模型從float變爲double。那麼能夠將要訓練的模型設置爲model = model.double()。此外,還要對全部的張量進行設置:pytorch.set_default_tensor_type('torch.DoubleTensor'),不過double比float要慢不少,要結合實際狀況進行思考。

相關文章
相關標籤/搜索