PyTorch-vejledning

โšก Smart opsummering

PyTorch er open source-frameworket for deep learning fra Meta, der nu driver 85 procent af AI-forskningsartikler i 2026. LessOns dรฆkker installation, grundlรฆggende framework, simpel regression, billedklassificering og AWS SageMaker-implementering.

  • ๐Ÿง  Dynamiske grafer: Ivrig udfรธrelse betyder, at tensorer lรธber linje for linje og letter Python-stil fejlfinding.
  • ๐Ÿ Pythonic API: Lรฆser naturligt for alle, der er bekendt med NumPy og Python.
  • ๐Ÿ“ฆ Rigt รธkosystem: Krammeansigt, vLLM, DeepSpeed โ€‹โ€‹og TorchVision er bygget pรฅ PyTorch.
  • ๐Ÿ‡ง๐Ÿ‡ท Trรฆningsarbejdsgang: Definer model, vรฆlg tab og optimering, og fortsรฆt derefter med en lรธkke fremad, bagud og trinvis.
  • ๐Ÿ“Š Forskningsdominans: 85 procent af nyere artikler bruger PyTorch versus 15 procent TensorFlow.
  • ๐Ÿค– LLM-klar: Indbygget understรธttelse af transformere, LoRA-finjustering og kvantiseringsworkflows.

PyTorch-vejledning

Hvad er PyTorh?

PyTorch er en open source Torch-baseret maskinlรฆringsbibliotek til behandling af naturligt sprog ved hjรฆlp af PythonDet ligner NumPy, men med kraftig GPU-understรธttelse. Det tilbyder dynamiske beregningsgrafer, som du kan รฆndre pรฅ farten ved hjรฆlp af autograd. PyTorch er ogsรฅ hurtigere end nogle andre frameworks. Det blev udviklet af Facebooks AI Research Group i 2016.

At vide hvad PyTorch giver et afbalanceret blik pรฅ sine styrker og ulemper.

PyTorFordele og ulemper ved ch

Fรธlgende er fordele og ulemper ved PyTorch:

Fordele ved PyTorch

  1. Simpelt bibliotek
    PyTorch-koden er enkel. Den er let at forstรฅ, og du bruger biblioteket med det samme. Se for eksempel kodestykket nedenfor:
class Net(torch.nn.Module):
   def __init__(self):
       super(Net, self).__init__()
       self.layer = torch.nn.Linear(1, 1)

   def forward(self, x):
       x = self.layer(x)      
       return x

Som nรฆvnt ovenfor kan du nemt definere netvรฆrksmodellen, og du kan hurtigt forstรฅ koden uden meget trรฆning.

  1. Dynamisk beregningsgraf

Dynamisk beregningsgraf

Billedkilde: Udforskning af dyb lรฆring med PyTorch

PyTorch tilbyder dynamisk beregningsgraf (DAG). Beregningsgrafer er en mรฅde at udtrykke matematiske udtryk i grafmodeller eller teorier sรฅsom noder og kanter. Noden udfรธrer den matematiske operation, og kanten er en tensor, der fรธres ind i noderne og bรฆrer nodens output i tensoren.

DAG er en graf, der har vilkรฅrlig form og i stand til at udfรธre operationer mellem forskellige inputgrafer. Hver iteration oprettes en ny graf. Sรฅ det er muligt at have den samme grafstruktur eller oprette en ny graf med en anden operation, eller vi kan kalde det en dynamisk graf.

  1. Bedre ydeevne

Fรฆllesskaber og forskere, benchmark og sammenligne rammer for at se, hvilken der er hurtigere. En GitHub-repo Benchmark pรฅ Deep Learning Frameworks og GPU'er rapporterede, at PyTorch er hurtigere end det andet framework med hensyn til billeder behandlet pr. sekund.

Som du kan se nedenfor, viser sammenligningsgraferne med vgg16 og resnet152

Fordele ved PyTorch

Fordele ved PyTorch

  1. Native Python

PyTorch er mere Python-baseret. Hvis du for eksempel vil trรฆne en model, kan du bruge et native kontrolflow som f.eks. loo.ping og rekursioner uden behov for at tilfรธje flere specielle variabler eller sessioner for at kunne kรธre dem. Dette er meget nyttigt for trรฆningsprocessen.

PyTorch implementerer ogsรฅ imperativ programmering, og det er bestemt mere fleksibelt. Sรฅ det er muligt at udskrive tensorvรฆrdien midt i en beregningsproces.

Ulempe ved PyTorch

PyTorch krรฆver tredjepartsapplikationer til visualisering. Den krรฆver ogsรฅ en API-server til produktion.

Nรฆste i denne PyTorch-tutorial, vi lรฆrer om forskellen mellem PyTorch og TensorFlow.

PyTorch vs. TensorFlow

Parameter PyTorch TensorFlow
Model definition Modellen er defineret i en underklasse og tilbyder en nem at bruge pakke Modellen er defineret med mange, og du skal forstรฅ syntaksen
GPU Support Ja Ja
Graftype Dynamisk statisk
Vรฆrktรธjer Intet visualiseringsvรฆrktรธj Du kan bruge Tensorboard visualiseringsvรฆrktรธj
Fรฆllesskab Samfundet vokser stadig Store aktive fรฆllesskaber

Med sammenligningen i tankerne er nรฆste skridt at fรฅ PyTorch kรธrer lokalt eller i skyen.

Installation af PyTorch

Linux

Det er ligetil at installere det i Linux. Du kan vรฆlge at bruge et virtuelt miljรธ eller installere det direkte med root-adgang. Indtast denne kommando i terminalen

pip3 install --upgrade torch torchvision

AWS Sagemaker

Sagemaker er en af โ€‹โ€‹platformene i Amazon Web Service der tilbyder en kraftfuld Machine Learning-motor med forudinstallerede deep learning-konfigurationer til dataforskere eller udviklere til at bygge, trรฆne og implementere modeller i enhver skala.

ร…bn fรธrst Amazon Sagemager konsollen og klik pรฅ Opret notesbogsforekomst og udfyld alle detaljerne for din notesbog.

AWS Sagemaker

Nรฆste trin, klik pรฅ ร…bn for at starte din notebook-forekomst.

AWS Sagemaker

Endelig, In JupyterKlik pรฅ Ny, og vรฆlg conda_pytorch_p36, sรฅ er du klar til at bruge din notesbogsinstans med Py.Torch installeret.

Nรฆste i denne PyTorch tutorial, vi lรฆrer om PyTorGrundlรฆggende om ch-frameworket.

Installationen er pรฅ plads, selve API'en er nรฆste stop.

PyTorGrundlรฆggende om ch-rammevรฆrket

Lad os lรฆre de grundlรฆggende begreber i PyTorch fรธr vi dykker ned. PyTorch bruger Tensor for hver variabel, ligesom numpys ndarray, men med GPU-beregningsunderstรธttelse. Her vil vi forklare netvรฆrksmodellen, tabsfunktionen, Backprop og Optimizer.

Netvรฆrksmodel

Netvรฆrket kan konstrueres ved at underklassificere torch.nn. Der er 2 hoveddele,

  1. Den fรธrste del er at definere de parametre og lag, du vil bruge
  2. Den anden del er hovedopgaven kaldet den fremadrettede proces, der vil tage et input og forudsige outputtet.
Import torch
import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
 def __init__(self):
        super(Model, self).__init__()
        self.conv1 = nn.Conv2d(3, 20, 5)
        self.conv2 = nn.Conv2d(20, 40, 5)
self.fc1 = nn.Linear(320, 10)

def forward(self, x):
       x = F.relu(self.conv1(x))
       x = F.relu(self.conv2(x))
       x = x.view(-1, 320)
       x = F.relu(self.fc1(x))
       return F.log_softmax(x)

net = Model()

Som du kan se ovenfor, opretter du en klasse af nn.Module kaldet Model. Den indeholder 2 Conv2d lag og et lineรฆrt lag. Det fรธrste conv2d-lag tager et input pรฅ 3 og output-formen pรฅ 20. Det andet lag vil tage et input pรฅ 20 og vil producere en output-form pรฅ 40. Det sidste lag er et fuldt forbundet lag i form af 320 og vil producere et output pรฅ 10.

Fremadgรฅende proces vil tage et input af X og fรธre det til conv1 laget og udfรธre ReLU funktion,

Pรฅ samme mรฅde vil det ogsรฅ fodre conv2-laget. Derefter omformes x'et til (-1, 320) og fรธres ind i det endelige FC-lag. Fรธr du sender output, skal du bruge softmax aktiveringsfunktionen.

Baglรฆns processen er automatisk defineret af autograd, sรฅ du behรธver kun at definere fremad processen.

Tabsfunktion

Tabsfunktionen bruges til at mรฅle, hvor godt prรฆdiktionsmodellen er i stand til at forudsige de forventede resultater. PyTorch har allerede mange standard tabsfunktioner i torch.nn-modulet. For eksempel kan du bruge Cross-Entropy Loss til at lรธse et Py-problem med flere klasser.Torch klassifikationsproblem. Det er nemt at definere tabsfunktionen og beregne tabene:

loss_fn = nn.CrossEntropyLoss()

#training process
loss = loss_fn(out, target)

Det er nemt at bruge din egen tabsfunktionsberegning med PyTorch.

Rygprop

For at udfรธre backpropagation, kalder du blot los.backward(). Fejlen vil blive beregnet, men husk at rydde den eksisterende gradient med zero_grad()

net.zero_grad() # to clear the existing gradient
loss.backward() # to perform backpropragation

Optimizer

Torch.optim giver almindelige optimeringsalgoritmer. Du kan definere en optimering med et enkelt trin:

optimizer = torch.optim.SGD(net.parameters(), lr = 0.01, momentum=0.9)

Du skal videregive netvรฆrksmodelparametrene og indlรฆringshastigheden, sรฅ parametrene ved hver iteration vil blive opdateret efter backprop-processen.

Den reneste mรฅde at lรฆre API'en at kende pรฅ er et lille, end-to-end eksempel.

Simpel regression med PyTorch

Lad os lรฆre simpel regression med PyTorch eksempler:

Trin 1) Oprettelse af vores netvรฆrksmodel

Vores netvรฆrksmodel er et simpelt lineรฆrt lag med en input- og en outputform pรฅ 1.

from __future__ import print_function

import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable

class Net(nn.Module):
   def __init__(self):
       super(Net, self).__init__()
       self.layer = torch.nn.Linear(1, 1)

   def forward(self, x):
       x = self.layer(x)      
       return x

net = Net()
print(net)

Og netvรฆrksudgangen skal vรฆre sรฅdan

Net(
  (hidden): Linear(in_features=1, out_features=1, bias=True)
)

Trin 2) Testdata

Fรธr du starter uddannelsesprocessen, skal du kende vores data. Du laver en tilfรฆldig funktion for at teste vores model. Y = x3 sin(x)+ 3x+0.8 rand(100)

# Visualize our data
import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(100)
y = np.sin(x) * np.power(x,3) + 3*x + np.random.rand(100)*0.8

plt.scatter(x, y)
plt.show()

Her er spredningsplottet for vores funktion:

Punktdiagram af simpel regression med PyTorch

Fรธr du starter trรฆningsprocessen, skal du konvertere numpy-arrayet til variabler, der understรธttes af Torch og autograd som vist i nedenstรฅende PyToreksempel pรฅ ch-regression.

# convert numpy array to tensor in shape of input size
x = torch.from_numpy(x.reshape(-1,1)).float()
y = torch.from_numpy(y.reshape(-1,1)).float()
print(x, y)

Trin 3) Optimering og tab

Dernรฆst skal du definere optimerings- og tabsfunktionen for vores trรฆningsproces.

# Define Optimizer and Loss Function
optimizer = torch.optim.SGD(net.parameters(), lr=0.2)
loss_func = torch.nn.MSELoss()

Trin 4) Trรฆning

Lad os nu starte vores trรฆningsproces. Med en epoke pรฅ 250 vil du iterere vores data for at finde den bedste vรฆrdi for vores hyperparametre.

inputs = Variable(x)
outputs = Variable(y)
for i in range(250):
   prediction = net(inputs)
   loss = loss_func(prediction, outputs) 
   optimizer.zero_grad()
   loss.backward()        
   optimizer.step()       

   if i % 10 == 0:
       # plot and show learning process
       plt.cla()
       plt.scatter(x.data.numpy(), y.data.numpy())
       plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=2)
       plt.text(0.5, 0, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 10, 'color':  'red'})
       plt.pause(0.1)

plt.show()

Trin 5) Resultat

Som du kan se nedenfor, har du udfรธrt Py med succesTorch-regression med et neuralt netvรฆrk. Faktisk vil den rรธde linje i plottet ved hver iteration opdatere og รฆndre sin position for at passe til dataene. Men pรฅ dette billede viser den kun det endelige resultat, som vist i Py-diagrammet nedenfor.Torch eksempel:

Spredningsplot af simpelt regressionsresultat

Regression er en opvarmning; billedklassificering trรฆner Py's dybdelรฆringsmusklerTorch.

Eksempel pรฅ billedklassificering med PyTorch

En af de populรฆre metoder til at lรฆre det grundlรฆggende dyb lรฆring er med MNIST-datasรฆttet. Det er "Hej verden" i dyb lรฆring. Datasรฆttet indeholder hรฅndskrevne tal fra 0 โ€“ 9 med i alt 60,000 trรฆningsprรธver og 10,000 testprรธver, der allerede er mรฆrket med stรธrrelsen 28ร—28 pixels.

Billedklassificering med PyTorch

Trin 1) Forbehandle dataene

I det fรธrste trin af denne PyTorch-klassifikationseksempel, du skal indlรฆse datasรฆttet ved hjรฆlp af torchvision-modulet.

Fรธr du starter trรฆningsprocessen, skal du forstรฅ dataene. Torchvision vil indlรฆse datasรฆttet og transformere billederne med de passende krav til netvรฆrket, sรฅsom form og normalisering af billederne.

import torch
import torchvision
import numpy as np
from torchvision import datasets, models, transforms

# This is used to transform the images to Tensor and normalize it
transform = transforms.Compose(
   [transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

training = torchvision.datasets.MNIST(root='./data', train=True,
                                       download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(training, batch_size=4,
                                         shuffle=True, num_workers=2)

testing = torchvision.datasets.MNIST(root='./data', train=False,
                                      download=True, transform=transform)
test_loader = torch.utils.data.DataLoader(testing, batch_size=4,
                                        shuffle=False, num_workers=2)

classes = ('0', '1', '2', '3',
          '4', '5', '6', '7', '8', '9')
         
import matplotlib.pyplot as plt
import numpy as np

#create an iterator for train_loader
# get random training images
data_iterator = iter(train_loader)
images, labels = data_iterator.next()

#plot 4 images to visualize the data
rows = 2
columns = 2
fig=plt.figure()
for i in range(4):
   fig.add_subplot(rows, columns, i+1)
   plt.title(classes[labels[i]])
   img = images[i] / 2 + 0.5     # this is for unnormalize the image
   img = torchvision.transforms.ToPILImage()(img)
   plt.imshow(img)
plt.show()

Transformationsfunktionen konverterer billederne til tensor og normaliserer vรฆrdien. Funktionen torchvision.transforms.MNIST vil downloade datasรฆttet (hvis det ikke er tilgรฆngeligt) i biblioteket, indstille datasรฆttet til trรฆning om nรธdvendigt og udfรธre transformationsprocessen.

For at visualisere datasรฆttet bruger du data_iterator til at fรฅ den nรฆste batch af billeder og etiketter. Du bruger matplot til at plotte disse billeder og deres passende etiket. Som du kan se nedenfor vores billeder og deres etiketter.

Eksempel pรฅ billedklassificering med PyTorch

Trin 2) Konfiguration af netvรฆrksmodel

Nu i denne PyTorch eksempel, du vil lave et simpelt neuralt netvรฆrk til PyTorch-billedklassificering.

Her introducerer vi dig til en anden mรฅde at oprette netvรฆrksmodellen i PyTorkap. Vi vil bruge nn.Sequential til at lave en sekvensmodel i stedet for at lave en underklasse af nn.Module.

import torch.nn as nn

# flatten the tensor into 
class Flatten(nn.Module):
   def forward(self, input):
       return input.view(input.size(0), -1)

#sequential based model
seq_model = nn.Sequential(
           nn.Conv2d(1, 10, kernel_size=5),
           nn.MaxPool2d(2),
           nn.ReLU(),
           nn.Dropout2d(),
           nn.Conv2d(10, 20, kernel_size=5),
           nn.MaxPool2d(2),
           nn.ReLU(),
           Flatten(),
           nn.Linear(320, 50),
           nn.ReLU(),
           nn.Linear(50, 10),
           nn.Softmax(),
         )

net = seq_model
print(net)

Her er output fra vores netvรฆrksmodel

Sequential(
  (0): Conv2d(1, 10, kernel_size=(5, 5), stride=(1, 1))
  (1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (2): ReLU()
  (3): Dropout2d(p=0.5)
  (4): Conv2d(10, 20, kernel_size=(5, 5), stride=(1, 1))
  (5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (6): ReLU()
  (7): Flatten()
  (8): Linear(in_features=320, out_features=50, bias=True)
  (9): ReLU()
  (10): Linear(in_features=50, out_features=10, bias=True)
  (11): Softmax()
)

Netvรฆrksforklaring

  1. Sekvensen er, at det fรธrste lag er et Conv2D-lag med en input-form pรฅ 1 og output-form pรฅ 10 med en kernestรธrrelse pรฅ 5
  2. Dernรฆst har du et MaxPool2D-lag
  3. En ReLU aktiveringsfunktion
  4. et Dropout-lag for at droppe lave sandsynlighedsvรฆrdier.
  5. Derefter en anden Conv2d med input-formen pรฅ 10 fra det sidste lag og output-formen pรฅ 20 med en kernestรธrrelse pรฅ 5
  6. Dernรฆst et MaxPool2d-lag
  7. ReLU aktiveringsfunktion.
  8. Derefter vil du flade tensoren, fรธr du fรธrer den ind i det lineรฆre lag
  9. Linear Layer vil kortlรฆgge vores output pรฅ det andet Lineรฆre lag med softmax aktiveringsfunktion

Trin 3) Trรฆn modellen

Fรธr du starter trรฆningsprocessen, er det nรธdvendigt at opsรฆtte kriteriet og optimeringsfunktionen.

Som kriterium bruger du CrossEntropyLoss. Som optimizer bruger du SGD med en lรฆringsrate pรฅ 0.001 og et momentum pรฅ 0.9, som vist i Py-diagrammet nedenfor.Torch eksempel.

import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

Fremadgรฅende proces vil tage inputformen og videregive den til det fรธrste conv2d-lag. Derefter vil den blive fรธrt ind i maxpool2d og til sidst sat ind i ReLU-aktiveringsfunktionen. Den samme proces vil forekomme i det andet conv2d-lag. Derefter omformes inputtet til (-1,320) og fรธres ind i fc-laget for at forudsige outputtet.

Nu vil du starte trรฆningsprocessen. Du vil gentage vores datasรฆt 2 gange eller med en epoke pรฅ 2 og udskrive det aktuelle tab for hver 2000 batch.

for epoch in range(2): 

#set the running loss at each epoch to zero
   running_loss = 0.0
# we will enumerate the train loader with starting index of 0
# for each iteration (i) and the data (tuple of input and labels)
   for i, data in enumerate(train_loader, 0):
       inputs, labels = data

# clear the gradient
       optimizer.zero_grad()

#feed the input and acquire the output from network
       outputs = net(inputs)

#calculating the predicted and the expected loss
       loss = criterion(outputs, labels)

#compute the gradient
       loss.backward()

#update the parameters
       optimizer.step()

       # print statistics
       running_loss += loss.item()
       if i % 1000 == 0:
           print('[%d, %5d] loss: %.3f' %
                 (epoch + 1, i + 1, running_loss / 1000))
           running_loss = 0.0

Ved hver epoke vil tรฆlleren fรฅ den nรฆste tuple af input og tilsvarende etiketter. Fรธr vi leverer input til vores netvรฆrksmodel, skal vi rydde den forrige gradient. Dette er pรฅkrรฆvet, fordi gradienten vil blive akkumuleret i stedet for at blive erstattet efter baglรฆns processen (tilbageudbredelsesprocessen). Derefter vil vi beregne tabene fra det forudsagte output fra det forventede output. Derefter vil vi lave en backpropagation for at beregne gradienten, og til sidst opdaterer vi parametrene.

Her er resultatet af trรฆningsprocessen

[1, 	1] loss: 0.002
[1,  1001] loss: 2.302
[1,  2001] loss: 2.295
[1,  3001] loss: 2.204
[1,  4001] loss: 1.930
[1,  5001] loss: 1.791
[1,  6001] loss: 1.756
[1,  7001] loss: 1.744
[1,  8001] loss: 1.696
[1,  9001] loss: 1.650
[1, 10001] loss: 1.640
[1, 11001] loss: 1.631
[1, 12001] loss: 1.631
[1, 13001] loss: 1.624
[1, 14001] loss: 1.616
[2, 	1] loss: 0.001
[2,  1001] loss: 1.604
[2,  2001] loss: 1.607
[2,  3001] loss: 1.602
[2,  4001] loss: 1.596
[2,  5001] loss: 1.608
[2,  6001] loss: 1.589
[2,  7001] loss: 1.610
[2,  8001] loss: 1.596
[2,  9001] loss: 1.598
[2, 10001] loss: 1.603
[2, 11001] loss: 1.596
[2, 12001] loss: 1.587
[2, 13001] loss: 1.596
[2, 14001] loss: 1.603

Trin 4) Test modellen

Nรฅr du har trรฆnet vores model, skal du teste eller evaluere med andre sรฆt billeder.

Vi vil bruge en iterator til test_loader, og den vil generere en batch af billeder og etiketter, som vil blive videregivet til den trรฆnede model. Det forudsagte output vil blive vist og sammenlignet med det forventede output.

#make an iterator from test_loader
#Get a batch of training images
test_iterator = iter(test_loader)
images, labels = test_iterator.next()

results = net(images)
_, predicted = torch.max(results, 1)

print('Predicted: ', ' '.join('%5s' % classes[predicted[j]] for j in range(4)))

fig2 = plt.figure()
for i in range(4):
   fig2.add_subplot(rows, columns, i+1)
   plt.title('truth ' + classes[labels[i]] + ': predict ' + classes[predicted[i]])
   img = images[i] / 2 + 0.5     # this is to unnormalize the image
   img = torchvision.transforms.ToPILImage()(img)
   plt.imshow(img)
plt.show()

Eksempel pรฅ billedklassificering med PyTorch

Ofte Stillede Spรธrgsmรฅl

Ja, for de fleste elever. PyTorchs ivrige henrettelse, Pythonic API og Hugging Face-justering gรธr det nemmere at lรฆre. Undersรธgelser viser, at 60 procent af begyndere vรฆlger PyTorch fรธrst.

AI-assistenter som Copilot, Cursor og JetBrains AI genererer PyTorch trรฆningslรธkker, foreslรฅ lagarkitekturer og debug tensorformfejl. Hugging Face Transformers leverer ogsรฅ PyTorch-fรธrste modeller.

Ja. AI-vรฆrktรธjer understรธtter nn.Module-klasser, optimeringsvalg og trรฆningslรธkker. De forklarer ogsรฅ CUDA-fejl, foreslรฅr flag med blandet prรฆcision og anbefaler batchstรธrrelser ud fra datasรฆtformen.

PyTorch bruger dynamiske grafer og dominerer forskning. TensorFlow fรธrer an i produktionsimplementeringen pรฅ mobil og edge gennem TensorFlow Lite. Ydelsesforskellen er lukket takket vรฆre torch.compile i PyTorch 2.

Omkring 85 procent af forskningsartikler om deep learning bruger PyTorch i 2026. Den dynamiske grafmodel passer til eksperimentering, og hele LLM-รธkosystemet fra Hugging Face til vLLM er bygget op omkring PyTorch.

PyTorch kรธrer nativt pรฅ CPU- og CUDA GPU'er, understรธtter ROCm pรฅ AMD GPU'er, MPS pรฅ Apple Silicon og TPU'er via PyTorch XLA-projekt. Vรฆlg den rigtige enhed med .to()-kald.

Ja igennem TorchServe, ONNX-eksport og den nyere ExecuTorch runtime. TensorFlow Lite er stadig mere moden til mobil, men PyTorch lukker hullet hurtigt ved kantinferens.

Begyndere bygger deres fรธrste netvรฆrk pรฅ en dag eller to. Det tager typisk tre til seks mรฅneder med konsekvent projektarbejde at mestre CNN'er, transformere, distribueret trรฆning og produktionsimplementering.

Opsummer dette indlรฆg med: