国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PyTorch翻譯官網(wǎng)教程1-QUICKSTART

這篇具有很好參考價值的文章主要介紹了PyTorch翻譯官網(wǎng)教程1-QUICKSTART。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

官網(wǎng)鏈接

Quickstart — PyTorch Tutorials 2.0.1+cu117 documentation

快速開始

本節(jié)將介紹機器學習中常見任務(wù)的API。請參閱每個部分中的鏈接以深入了解。

數(shù)據(jù)處理

PyTorch有兩個處理數(shù)據(jù)源,torch.utils.data.DataLoader 和 torch.utils.data.Dataset 。Dataset存儲樣本及其相應(yīng)的標簽,DataLoader在Dataset之上包裝一個可迭代對象。

import torch
from torch import nn
from torch.utils.data import DataLoader
from torchvision import datasets
from torchvision.transforms import ToTensor

PyTorch提供了特定領(lǐng)域的庫,如TorchText, TorchVision和TorchAudio,它們都包含數(shù)據(jù)集。在本教程中,我們將使用TorchVision數(shù)據(jù)集。

torchvision.datasets 模塊包含了真實數(shù)據(jù)的Dataset對象。比如 CIFAR, COCO(完整列表參考Datasets — Torchvision 0.15 documentation)。在本教程中,我們使用FashionMNIST數(shù)據(jù)集。每個TorchVision數(shù)據(jù)集包含兩個參數(shù):transform和target_transform,分別用于修改樣本和標簽。

# Download training data from open datasets.
training_data = datasets.FashionMNIST(
    root="data",
    train=True,
    download=True,
    transform=ToTensor(),
)

# Download test data from open datasets.
test_data = datasets.FashionMNIST(
    root="data",
    train=False,
    download=True,
    transform=ToTensor(),
)

我們將Dataset作為DataLoader的入?yún)?,Dataset在數(shù)據(jù)集上包裝了一個可迭代對象,并支持自動批處理、采樣、洗牌和多進程數(shù)據(jù)加載。這里我們定義了一個批處理大小為64,即dataloader可迭代對象中的每個元素將返回一批64個特征和標簽。

batch_size = 64

# Create data loaders.
train_dataloader = DataLoader(training_data, batch_size=batch_size)
test_dataloader = DataLoader(test_data, batch_size=batch_size)

for X, y in test_dataloader:
    print(f"Shape of X [N, C, H, W]: {X.shape}")
    print(f"Shape of y: {y.shape} {y.dtype}")
    break

輸出:

Shape of X [N, C, H, W]: torch.Size([64, 1, 28, 28])
Shape of y: torch.Size([64]) torch.int64

創(chuàng)建模型

為了在PyTorch中定義一個神經(jīng)網(wǎng)絡(luò),我們創(chuàng)建了一個繼承了nn.Module的類,我們在__init__函數(shù)中定義網(wǎng)絡(luò)層,并在forward函數(shù)中指定數(shù)據(jù)如何通過網(wǎng)絡(luò)。為了加速神經(jīng)網(wǎng)絡(luò)的操作,我們將其轉(zhuǎn)移到GPU或MPS(如果可用)。

注:

PyTorch MPS (Multi-Process Service)是 PyTorch 中的一種分布式訓練方式。它是基于Apple的MPS(Metal Performance Shaders) 框架開發(fā)的

# Get cpu, gpu or mps device for training.
device = (
    "cuda"
    if torch.cuda.is_available()
    else "mps"
    if torch.backends.mps.is_available()
    else "cpu"
)
print(f"Using {device} device")

# Define model
class NeuralNetwork(nn.Module):
    def __init__(self):
        super().__init__()
        self.flatten = nn.Flatten()
        self.linear_relu_stack = nn.Sequential(
            nn.Linear(28*28, 512),
            nn.ReLU(),
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10)
        )

    def forward(self, x):
        x = self.flatten(x)
        logits = self.linear_relu_stack(x)
        return logits

model = NeuralNetwork().to(device)
print(model)

輸出

Using mps device
NeuralNetwork(
  (flatten): Flatten(start_dim=1, end_dim=-1)
  (linear_relu_stack): Sequential(
    (0): Linear(in_features=784, out_features=512, bias=True)
    (1): ReLU()
    (2): Linear(in_features=512, out_features=512, bias=True)
    (3): ReLU()
    (4): Linear(in_features=512, out_features=10, bias=True)
  )
)

注:因為我的設(shè)備是蘋果,所以輸出是mps,跟官網(wǎng)顯示不同


優(yōu)化模型參數(shù)

為了訓練一個模型,我們需要一個損失函數(shù)和一個優(yōu)化器。

loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1e-3)

在單個訓練循環(huán)中,模型對訓練數(shù)據(jù)集進行預(yù)測(批量提供給它),并反向傳播預(yù)測誤差以調(diào)整模型的參數(shù)。

def train(dataloader, model, loss_fn, optimizer):
    size = len(dataloader.dataset)
    model.train()
    for batch, (X, y) in enumerate(dataloader):
        X, y = X.to(device), y.to(device)

        # Compute prediction error
        pred = model(X)
        loss = loss_fn(pred, y)

        # Backpropagation
        loss.backward()
        optimizer.step()
        optimizer.zero_grad()

        if batch % 100 == 0:
            loss, current = loss.item(), (batch + 1) * len(X)
            print(f"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]")

我們還根據(jù)測試數(shù)據(jù)集檢查模型的性能,以確保它正在學習。

def test(dataloader, model, loss_fn):
    size = len(dataloader.dataset)
    num_batches = len(dataloader)
    model.eval()
    test_loss, correct = 0, 0
    with torch.no_grad():
        for X, y in dataloader:
            X, y = X.to(device), y.to(device)
            pred = model(X)
            test_loss += loss_fn(pred, y).item()
            correct += (pred.argmax(1) == y).type(torch.float).sum().item()
    test_loss /= num_batches
    correct /= size
    print(f"Test Error: \n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \n")

訓練過程在幾個迭代(epochs)中進行。在每個epochs,模型學習參數(shù)以做出更好的預(yù)測。我們打印出模型在每個epochs的精度和損失;我們希望看到精度隨著時間的推移而提高,損失隨著時間的推移而減少。

輸出

Epoch 1
-------------------------------
loss: 2.304695  [   64/60000]
loss: 2.293914  [ 6464/60000]
loss: 2.271139  [12864/60000]
loss: 2.267832  [19264/60000]
loss: 2.240983  [25664/60000]
loss: 2.217048  [32064/60000]
loss: 2.230957  [38464/60000]
loss: 2.190546  [44864/60000]
loss: 2.180454  [51264/60000]
loss: 2.167166  [57664/60000]
Test Error: 
 Accuracy: 43.7%, Avg loss: 2.148366 

Epoch 2
-------------------------------
loss: 2.155765  [   64/60000]
loss: 2.153187  [ 6464/60000]
loss: 2.084353  [12864/60000]
loss: 2.106838  [19264/60000]
loss: 2.051079  [25664/60000]
loss: 1.998855  [32064/60000]
loss: 2.030421  [38464/60000]
loss: 1.942099  [44864/60000]
loss: 1.941234  [51264/60000]
loss: 1.891874  [57664/60000]
Test Error: 
 Accuracy: 55.8%, Avg loss: 1.873747 

Epoch 3
-------------------------------
loss: 1.904033  [   64/60000]
loss: 1.885520  [ 6464/60000]
loss: 1.749947  [12864/60000]
loss: 1.801118  [19264/60000]
loss: 1.690538  [25664/60000]
loss: 1.652585  [32064/60000]
loss: 1.680197  [38464/60000]
loss: 1.571219  [44864/60000]
loss: 1.597052  [51264/60000]
loss: 1.505626  [57664/60000]
Test Error: 
 Accuracy: 61.0%, Avg loss: 1.510632 

Epoch 4
-------------------------------
loss: 1.579605  [   64/60000]
loss: 1.553953  [ 6464/60000]
loss: 1.388195  [12864/60000]
loss: 1.468328  [19264/60000]
loss: 1.347958  [25664/60000]
loss: 1.354385  [32064/60000]
loss: 1.368013  [38464/60000]
loss: 1.285745  [44864/60000]
loss: 1.321613  [51264/60000]
loss: 1.226315  [57664/60000]
Test Error: 
 Accuracy: 63.1%, Avg loss: 1.248957 

Epoch 5
-------------------------------
loss: 1.330482  [   64/60000]
loss: 1.320243  [ 6464/60000]
loss: 1.139326  [12864/60000]
loss: 1.250566  [19264/60000]
loss: 1.124903  [25664/60000]
loss: 1.160373  [32064/60000]
loss: 1.176003  [38464/60000]
loss: 1.108413  [44864/60000]
loss: 1.148409  [51264/60000]
loss: 1.063753  [57664/60000]
Test Error: 
 Accuracy: 64.3%, Avg loss: 1.086042 

Done!

保存模型

保存模型的一種常用方法是序列化內(nèi)部狀態(tài)字典(包含模型參數(shù))。

torch.save(model.state_dict(), "model.pth")
print("Saved PyTorch Model State to model.pth")

輸出

Saved PyTorch Model State to model.pth

加載模型

model = NeuralNetwork().to(device)
model.load_state_dict(torch.load("model.pth"))

這個模型現(xiàn)在可以用來做預(yù)測。

classes = [
    "T-shirt/top",
    "Trouser",
    "Pullover",
    "Dress",
    "Coat",
    "Sandal",
    "Shirt",
    "Sneaker",
    "Bag",
    "Ankle boot",
]

model.eval()
x, y = test_data[0][0], test_data[0][1]
with torch.no_grad():
    x = x.to(device)
    pred = model(x)
    predicted, actual = classes[pred[0].argmax(0)], classes[y]
    print(f'Predicted: "{predicted}", Actual: "{actual}"')

輸出文章來源地址http://www.zghlxwxcb.cn/news/detail-499260.html

Predicted: "Ankle boot", Actual: "Ankle boot"
 

到了這里,關(guān)于PyTorch翻譯官網(wǎng)教程1-QUICKSTART的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • PyTorch翻譯官網(wǎng)教程6-AUTOMATIC DIFFERENTIATION WITH TORCH.AUTOGRAD

    PyTorch翻譯官網(wǎng)教程6-AUTOMATIC DIFFERENTIATION WITH TORCH.AUTOGRAD

    Automatic Differentiation with torch.autograd — PyTorch Tutorials 2.0.1+cu117 documentation 當訓練神經(jīng)網(wǎng)絡(luò)時,最常用的算法是方向傳播算法。在該算法中,根據(jù)損失函數(shù)與給定參數(shù)的梯度來調(diào)整模型參數(shù)(權(quán)重)。 為了計算這些梯度,PyTorch有一個內(nèi)置的微分引擎,名為torch.autograd。它支持任

    2024年02月16日
    瀏覽(23)
  • PyTorch翻譯官網(wǎng)教程-FAST TRANSFORMER INFERENCE WITH BETTER TRANSFORMER

    Fast Transformer Inference with Better Transformer — PyTorch Tutorials 2.0.1+cu117 documentation 本教程介紹了作為PyTorch 1.12版本的一部分的Better Transformer (BT)。在本教程中,我們將展示如何使用更好的 Transformer 與 torchtext 進行生產(chǎn)推理。Better Transformer是一個具備生產(chǎn)條件fastpath并且可以加速在CP

    2024年02月13日
    瀏覽(23)
  • PyTorch翻譯官網(wǎng)教程-LANGUAGE MODELING WITH NN.TRANSFORMER AND TORCHTEXT

    PyTorch翻譯官網(wǎng)教程-LANGUAGE MODELING WITH NN.TRANSFORMER AND TORCHTEXT

    Language Modeling with nn.Transformer and torchtext — PyTorch Tutorials 2.0.1+cu117 documentation 這是一個關(guān)于訓練模型使用nn.Transformer來預(yù)測序列中的下一個單詞的教程。 PyTorch 1.2版本包含了一個基于論文Attention is All You Need的標準 transformer 模塊。與循環(huán)神經(jīng)網(wǎng)絡(luò)( RNNs )相比, transformer 模型已被

    2024年02月13日
    瀏覽(18)
  • PyTorch翻譯官網(wǎng)教程-DEPLOYING PYTORCH IN PYTHON VIA A REST API WITH FLASK

    Deploying PyTorch in Python via a REST API with Flask — PyTorch Tutorials 2.0.1+cu117 documentation 在本教程中,我們將使用Flask部署PyTorch模型,并開放用于模型推斷的REST API。特別是,我們將部署一個預(yù)訓練的DenseNet 121模型來檢測圖像。 這是關(guān)于在生產(chǎn)環(huán)境中部署PyTorch模型的系列教程中的第一篇

    2024年02月16日
    瀏覽(31)
  • PyTorch翻譯官網(wǎng)教程-NLP FROM SCRATCH: GENERATING NAMES WITH A CHARACTER-LEVEL RNN

    PyTorch翻譯官網(wǎng)教程-NLP FROM SCRATCH: GENERATING NAMES WITH A CHARACTER-LEVEL RNN

    NLP From Scratch: Generating Names with a Character-Level RNN — PyTorch Tutorials 2.0.1+cu117 documentation 這是我們關(guān)于“NLP From Scratch”的三篇教程中的第二篇。在第一個教程中 /intermediate/char_rnn_classification_tutorial 我們使用RNN將名字按其原始語言進行分類。這一次,我們將通過語言中生成名字。

    2024年02月13日
    瀏覽(20)
  • PyTorch翻譯官網(wǎng)教程-NLP FROM SCRATCH: CLASSIFYING NAMES WITH A CHARACTER-LEVEL RNN

    PyTorch翻譯官網(wǎng)教程-NLP FROM SCRATCH: CLASSIFYING NAMES WITH A CHARACTER-LEVEL RNN

    NLP From Scratch: Classifying Names with a Character-Level RNN — PyTorch Tutorials 2.0.1+cu117 documentation 我們將建立和訓練一個基本的字符級遞歸神經(jīng)網(wǎng)絡(luò)(RNN)來分類單詞。本教程以及另外兩個“from scratch”的自然語言處理(NLP)教程 NLP From Scratch: Generating Names with a Character-Level RNN 和 NLP From Scratch

    2024年02月12日
    瀏覽(28)
  • GPT最佳實踐-翻譯官網(wǎng)

    https://platform.openai.com/docs/guides/gpt-best-practices/gpt-best-practices 本指南分享了從 GPT 獲得更好結(jié)果的策略和戰(zhàn)術(shù)。有時可以結(jié)合使用此處描述的方法以獲得更大的效果。我們鼓勵進行實驗以找到最適合您的方法。 此處演示的一些示例目前僅適用于我們功能最強大的模型 gpt-4 .如果

    2024年02月09日
    瀏覽(47)
  • 【python】python結(jié)合js逆向,讓有道翻譯成為你的翻譯官,實現(xiàn)本地免費實時翻譯

    【python】python結(jié)合js逆向,讓有道翻譯成為你的翻譯官,實現(xiàn)本地免費實時翻譯

    ?? 歡迎大家來到景天科技苑?? ???? 養(yǎng)成好習慣,先贊后看哦~???? ?? 作者簡介:景天科技苑 ??《頭銜》:大廠架構(gòu)師,華為云開發(fā)者社區(qū)專家博主,阿里云開發(fā)者社區(qū)專家博主,CSDN新星創(chuàng)作者等等。 ??《博客》:Python全棧,前后端開發(fā),人工智能,js逆向,App逆

    2024年03月23日
    瀏覽(32)
  • TextMesh Pro 1 : 官網(wǎng)文章翻譯、基本使用視頻教程

    TextMesh Pro 1 : 官網(wǎng)文章翻譯、基本使用視頻教程

    實際操作參考:Unity3d 教程 | TextmeshPro 動態(tài)字體 | Fallback | 后備字體 | UI_嗶哩嗶哩_bilibili 原文鏈接:TextMesh Pro: Font Asset Creation - Unity Learn 把Font Assets看成字體容器(font container),這樣就能在項目中使用各種花里胡哨的字體,但是只需用一個相關(guān)文件,不用反復的修改原字體文

    2023年04月18日
    瀏覽(16)
  • Spring MVC里的DispatchServlet(結(jié)合Spring官網(wǎng)翻譯)

    Spring MVC里的DispatchServlet(結(jié)合Spring官網(wǎng)翻譯)

    在進入這一節(jié)之前我建議各位對 Java Web 有比較熟悉的了解以后再進行,否則閱讀起來會比較 困難且難以理解 。諸如 Servlet生命周期、ServletContext 、ApplicationContext 等等。如果不太熟悉Java Web,可以參考以下文章: JavaWeb——Servlet(全網(wǎng)最詳細教程包括Servlet源碼分析) 以及 S

    2024年02月07日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包