首頁  >  文章  >  科技週邊  >  PyTorch 怎麼學?太簡單了

PyTorch 怎麼學?太簡單了

WBOY
WBOY轉載
2024-03-07 19:46:11574瀏覽

很多朋友都向我諮詢如何學習PyTorch,實踐證明,初學者只需掌握少量概念和用法即可。讓我們一起看看這個簡明指南的總結!

PyTorch 该怎么学?太简单了

建構Tensor

PyTorch 中的Tensors 是多維數組,類似 NumPy 的 ndarrays,但可在GPU 上運作:

import torch# Create a 2x3 tensortensor = torch.tensor([[1, 2, 3], [4, 5, 6]])print(tensor)

動態計算圖

PyTorch 使用動態計算圖,在執行操作時即時建立計算圖,這為在運行時修改圖形提供了靈活性:

# Define two tensorsa = torch.tensor([2.], requires_grad=True)b = torch.tensor([3.], requires_grad=True)# Compute resultc = a * bc.backward()# Gradientsprint(a.grad)# Gradient w.r.t a

GPU加速

PyTorch 允許在CPU 和GPU 之間輕鬆切換。使用 .to(device) 即可:

device = "cuda" if torch.cuda.is_available() else "cpu"tensor = tensor.to(device)

Autograd:自動微分

PyTorch 的 autograd 為tensor的所有運算提供了自動微分功能,設定 requires_grad=True可以追蹤計算:

x = torch.tensor([2.], requires_grad=True)y = x**2y.backward()print(x.grad)# Gradient of y w.r.t x

模組化神經網路

PyTorch 提供了 nn.Module 類別來定義神經網路架構,透過子類化創建自訂層:

import torch.nn as nnclass SimpleNN(nn.Module):def __init__(self):super().__init__()self.fc = nn.Linear(1, 1)def forward(self, x):return self.fc(x)

預定義層和損失函數

PyTorch 在 nn 模組中提供了各種預定義層、損失函數和最佳化演算法:

loss_fn = nn.CrossEntropyLoss()optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

Dataset 與DataLoader

為實現高效率的資料處理和批次,PyTorch 提供了 Dataset 和 DataLoader 類別:

#
from torch.utils.data import Dataset, DataLoaderclass CustomDataset(Dataset):# ... (methods to define)data_loader = DataLoader(dataset, batch_size=32, shuffle=True)

#模型訓練(循環循環)

通常PyTorch 的訓練遵循以下模式:前向傳播、計算損失、反向傳遞和參數更新:

for epoch in range(epochs):for data, target in data_loader:optimizer.zero_grad()output = model(data)loss = loss_fn(output, target)loss.backward()optimizer.step()

模型序列化

########################################################################################################################################################################################################### #使用 torch.save() 和 torch.load() 儲存並載入模型:######
# Savetorch.save(model.state_dict(), 'model_weights.pth')# Loadmodel.load_state_dict(torch.load('model_weights.pth'))
######JIT######PyTorch 預設以eager模式運行,但也為模型提供即時(JIT)編譯:######
scripted_model = torch.jit.script(model)scripted_model.save("model_jit.pt")
#########

以上是PyTorch 怎麼學?太簡單了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除