一、torch.Tensor
torch.Tensor是PyTorch中表示張量的基礎數據類型,也是PyTorch中最常用的數據類型之一。它是一個多維數組,而且可以在CPU或GPU內存中存儲數據。
定義一個Tensor可以通過torch.Tensor函數或者torch.tensor函數,參數可以是list、tuple、ndarray或者標量。
import torch a = torch.Tensor([1,2,3]) b = torch.tensor([[1, 2], [3, 4]]) c = torch.tensor(3)
Tensor的屬性包括shape、dtype、device、layout等,可以通過這些屬性對tensor進行操作。
print(a.shape) #(3,) print(b.dtype) #torch.int64 print(c.device) #cpu a = a.to('cuda') #將a放到GPU上
二、torch.autograd.Variable與torch.Tensor的關係
在PyTorch 0.4版本之前,Variable是PyTorch中的一個重要組成部分,主要是為了方便定義需要求導的計算圖,通過Variable記錄Tensor的歷史版本,從而支持反向傳播計算梯度。
而從PyTorch 0.4版本開始,Variable被整合到了Tensor中,新版本中,用戶可以使用requires_grad參數在創建Tensor時決定是否需要求導。
a = torch.tensor([1,2,3], requires_grad=True) b = torch.tensor([4,5,6], requires_grad=True) c = a + b d = c.mean() d.backward() print(a.grad) print(b.grad)
三、torch.nn.Parameter
torch.nn.Parameter是一種特殊的Tensor,它被設置為一個模型的可學習參數。與普通的Tensor不同,在計算圖的生成中它是存在於nn.Module中的,並且默認有requires_grad=True屬性。
創建一個nn.Parameter時,需要指定形狀。通常在模型定義中調用這個函數創建需要學習的參數,例如權重和偏差。
import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.weight = nn.Parameter(torch.randn(3, 5)) self.bias = nn.Parameter(torch.zeros(3)) def forward(self, x): return torch.mm(x, self.weight) + self.bias net = Net() print(net)
四、總結
本文主要介紹了在PyTorch中三種重要的變量類型:torch.Tensor、torch.autograd.Variable和torch.nn.Parameter。Tensor是PyTorch中的基礎數值類型,可以在CPU或GPU上存儲數據;Variable是Tensor的歷史版本,在0.4版本之後被整合到Tensor中,需要使用requires_grad屬性來決定是否需要求導;Parameter是一種特殊的Tensor,是nn.Module中的可學習參數,通常在模型定義中被使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/312814.html